I want to add to a jar file some resources. I "profiled" it and added them in the build section.
But the resources aren't in the final jar file.
Here it goes the profile section of my pom.xml
:
<profile>
<id>myProfile</id>
<build>
<finalName>name</finalName>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>false</filtering>
<directory>${basedir}/profiles/myFolder</directory>
<includes>
<include>file.txt</include>
<include>file.xml</include>
</includes>
</resource>
</resources>
</build>
</profile>
And here the command I issue:
mvn clean install -PmyProfile
What's wrong?
When you build a java project and pack it into a jar (or a war), the files under the resources folder are included into the jar. These files may include configuration files, scripts and other resources needed during run time.
jar'. The resulting 'jar' file contains the compiled java class files as well as the files from src/main/resources . Usually there is no need to mentioned the 'maven-jar-plugin' explicit cause it's bound to the Maven Build Life Cycle. For full documentation, click here.
Your POM snippet looks globally fine and I cannot reproduce your problem. Here is the pom.xml I used:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q3459013</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>myProfile</id>
<build>
<finalName>name</finalName>
<resources>
<resource>
<directory>${basedir}/profiles/myFolder</directory>
<filtering>false</filtering>
<includes>
<include>file.txt</include>
<include>file.xml</include>
</includes>
</resource>
</resources>
</build>
</profile>
</profiles>
</project>
With the following project structure:
$ tree . . ├── pom.xml ├── profiles │ └── myFolder │ ├── file.txt │ └── file.xml └── src ├── main │ └── java │ └── com │ └── stackoverflow │ └── App.java └── test └── java └── com └── stackoverflow └── AppTest.java 11 directories, 5 files
And here is what I get:
$ mvn clean install -PmyProfile ... $ cd target $ tree . . ├── classes │ ├── com │ │ └── stackoverflow │ │ └── App.class │ ├── file.txt │ └── file.xml ├── maven-archiver │ └── pom.properties ├── name.jar ├── surefire-reports │ ├── com.stackoverflow.AppTest.txt │ └── TEST-com.stackoverflow.AppTest.xml └── test-classes └── com └── stackoverflow └── AppTest.class $ jar xvf name.jar created: META-INF/ inflated: META-INF/MANIFEST.MF created: com/ created: com/stackoverflow/ inflated: file.xml inflated: com/stackoverflow/App.class inflated: file.txt created: META-INF/maven/ created: META-INF/maven/com.stackoverflow/ created: META-INF/maven/com.stackoverflow/Q3459013/ inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.xml inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.properties
Works as expected.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With