Maven pom在jar之外寻找资源

时间:2013-07-11 17:18:19

标签: java maven maven-2 maven-3

我在创建一个包含所有依赖项和资源的可执行jar时遇到了问题。到目前为止,我已经拥有了罐子里面的所有东西,但它正在寻找罐子里面的资源。

这是我项目的结构:

MyProject
----images
----resources
----src
----...

我能够创建包含依赖项的可执行jar,并且资源也被打包,但它仍然在“resources”文件夹中查找资源,而不是在JAR中查找。

罐子看起来像这样:

MyProject.jar
----images
----resources
----...

当我尝试运行它时,我收到此错误:

java.io.FileNotFoundException: .../MyProject/target/resources/default-style.xml (No such file or directory)

所以我的问题是这样的:我的依赖性和资源都打包在我想要的jar中,但是在执行时它正在“target /”文件夹中查找“resources /”而不是在JAR中。

这是我的pom:

<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>
<!-- MyProject INFO -->
<groupId>Main</groupId>
<artifactId>MyProject</artifactId>
<version>0.0.1-beta</version>
<name>MyProject</name>
<packaging>jar</packaging>
<!-- DEPENDANCIES -->
<dependencies>
    <dependency>
    <groupId>custom</groupId>
    <artifactId>custom</artifactId>
    <version>1.0.0</version>
</dependency>    
    <dependency>
      <groupId>jgraphx</groupId>
      <artifactId>jgraphx</artifactId>
      <version>1.0.0</version>
</dependency>   
</dependencies>

<build>
    <sourceDirectory>src</sourceDirectory>
<!-- RESOURCES -->
    <resources>
      <resource>
        <directory>src</directory>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>${basedir}/images</directory>
    <filtering>false</filtering>
    <targetPath>images</targetPath>
      </resource>
      <resource>
        <directory>${basedir}/resources</directory>
    <filtering>false</filtering>
    <targetPath>resources</targetPath>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src</directory>
      </testResource>
    </testResources>
    <plugins>
<!--  For Java 6, you need to configure the maven-compiler-plugin. Add this to your pom.xml: -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
<!-- CREATE EXECUTABLE JAR WITH DEPENDANCIES -->
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
        <mainClass>Main.Main</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>package</phase> <!-- bind to the packaging phase -->
          <goals>
        <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    </plugins>
</build>
</project>

编辑:看起来它可能是我的代码。我来看看,谢谢! (我公司的代理阻止了大部分stackoverflow,因此我无法回复评论&gt;。&lt;这就是我在这里写的原因。感谢Jigar Joshi和Aurand!)

1 个答案:

答案 0 :(得分:0)

查看java构建路径。资源的默认输出文件夹可能不正确。这可能就是为什么资源内容没有被正确复制的原因。