AW: How do I create a customized build?

Jan Matèrne (jhm) <[email protected]>
Newsgroups gmane.comp.jakarta.ant.user
Message-ID <000e01d062df$d3898ae0$7a9ca0a0$@de>
I would provide several jars:
- application-core.jar: contains the application and the interfaces
- application-activemq.jar: contains the interface implementations for
ActiveMQ
- application-hornetq.jar ...


The approach you'll try to achieve (as I understand that) is having a "full
jar" for each impl
- application-activemq.jar: all for ActiveMQ
- application-hornetq.jar: all für HornetQ...


Both strategies would work with pattern.
Something like
  <jar destfile="application-core.jar" > 
    <fileset ... excludes="**/transportX/,**/transportY/...... />
  <jar destfile="application-${transport-strategy}.jar > 
    <fileset ... includes="**/${transport-strategy}/" />
or
  <jar destfile="application-${transport-strategy}.jar > 
    <fileset ... excludes="**/transportX/,**/transportY/...... />
    <fileset ... includes="**/${transport-strategy}/" />


Some more ideas for improvements:
- define a <macrodef> for creating the transport-jars
- if you want to build only for the 'current' transport system, use
<available> for setting the ${transport-strategy}


Jan



> -----Ursprüngliche Nachricht-----
> Von: Gagnon, Joseph - 0558 - MITLL [mailto:[email protected]]
> Gesendet: Donnerstag, 19. März 2015 19:45
> An: [email protected]
> Betreff: How do I create a customized build?
> 
> First let me preface this question by stating that I'm very much an Ant
> newbie.
> 
> I have a Java application that was designed to provide the ability to
> "plug
>  in" a message transport mechanism (e.g. ActiveMQ) for a given client
> installation.  The code defines interfaces for the transport and then
> there
> are a number of implementations that conform to the interfaces,
> providing
> concrete implementations of the transports we support.  The idea is
> that a
> given client will indicate the transport they want/need to use and we
> will
> provide them with a build that includes only the classes for the chosen
> implementation. No other transport implementations should be included.
> The
> reasons for this are to keep code size down and for 3rd party licensing
> issues.
> 
> How do you set up an Ant build file to customize the jar file produced
> so that
> it only includes a subset of the transport implementations?  Obviously
> I need
> to somehow get the transport selection into the build file so that it
> has the
> info it needs.  From what I've read, you have to use properties to get
> input
> arguments into the script.  Beyond that, I am at a loss as to what to
> do next.
> 
> I'll provide a brief package hierarchy to illustrate what is located
> where.
> If it makes sense to restructure this in some way, please let me know.
> 
> <base package>.impl
> 	config
> 		TransportConfig.java	<- Used to unmarshal a file used to
> configure the
> transport
> 	transport
> 		impl				<- Where the supported
transport
> implementations live
> 			dds.rti
> 			jms.activemq
> 			udp
> 			<transportX>
> 		<other packages and classes>
> 	<other packages and classes>
> <base package>.service
> 	TransportFactoryLoader.java	<- Uses a ServiceLoader to load a
> transport
> factory
> 						   (currently set up in
build file)
> <base package>.transport		<- Contains the interfaces the
> transports must
> implement
> 	<transport interfaces>
> 
> So, as an example, client A will be using ActiveMQ. We want to run the
> build
> so that only the <base package>.impl.transport.impl.jms.activemq
> classes are
> included, but nothing from the rti.dds, udp, etc. packages are
> included. I've
> tried to find information in this area, but have found nothing helps.
> 
> I am open to any suggestions and ideas about how to go about this.
> 
> Thanks,
> Joe Gagnon
> 
> Engineer II
> Group 58 - Cyber Systems & Technology
> MIT Lincoln Laboratory
> Lexington, MA
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.