Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

maven resources not placed in jar file

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?

like image 867
ssedano Avatar asked Aug 11 '10 13:08

ssedano


People also ask

Is resources folder included in jar?

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.

What is JAR file in Maven?

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.


1 Answers

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.

like image 142
Pascal Thivent Avatar answered Oct 14 '22 20:10

Pascal Thivent