Using maven-assembly-plugin
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<descriptors>
<descriptor>descriptor.xml</descriptor>
</descriptors>
<finalName>xxx-impl-${pom.version}</finalName>
<outputDirectory>target/assembly</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
</configuration>
in descriptor.xml file we can specify
<fileSets>
<fileSet>
<directory>src/install</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
Is it possible to include specific file from this folder or sub-folder depending on profile? Or some other way...
Like this:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/install/dev</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/install/prod</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</profile>
</profiles>
But it puts resources in jar when packaging. But we need to put it in zip when assemblying as I already mentioned above :( Thanks!
Place the executions of the plugin in every profile, inside tag build.
If your resources have a pattern (say
*.properties
) then you can do something like this in your assembly descriptor file:This copies all
*.properties
from yourtarget
folder to the root folder of your assembly zip. Based on the profile in yourpom.xml
which is being run, only appropriate resources will be present in thetarget
folder.