2013-02-27 137 views
2

當我將項目轉換爲maven時,我的jardesc工作得很好,直到昨天。jardesc在jar文件中創建一個「src」文件夾

現在,出於某種原因,當我創建包含的代碼和包一個jar文件:org.javacode和org.resource,我得到的jar文件下列文件夾:

組織/ javacode SRC /組織/資源

對於java包來說它似乎工作正常,但對於那些包含圖像資源的包,它會在根上創建一個額外的src文件夾。

我該如何解決這個問題?

編輯1:這裏是pom.xml中

<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>Energy3D</groupId> 
    <artifactId>Energy3D</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.ardor3d</groupId> 
     <artifactId>ardor3d-jogl</artifactId> 
     <version>0.9-SNAPSHOT</version> 
     <type>bundle</type> 
    </dependency> 
    <dependency> 
     <groupId>com.ardor3d</groupId> 
     <artifactId>ardor3d-lwjgl</artifactId> 
     <version>0.9-SNAPSHOT</version> 
     <type>bundle</type> 
    </dependency> 
    </dependencies> 
</project> 

編輯2:

同樣在這裏是jardesc的相關部分(gui包被正確地放置在組織/協合/ energy3d/GUI然而,圖像包被錯誤放置在SRC /組織/和睦/ energy3d /資源/創建JAR文件時圖像):

<javaElement handleIdentifier="=Energy3D/src&lt;org.concord.energy3d.gui"/> 
<javaElement handleIdentifier="=Energy3D/src&lt;org.concord.energy3d.resources.images"/> 
+0

請發表您的POM,它可能會幫助 – 2013-02-28 08:52:24

+0

。(見編輯1及以上的編輯2)。 – 2013-02-28 15:19:44

+0

請說明您當前的目錄結構。 – carlspring 2013-03-04 11:23:42

回答

0

你沒有關注Maven的約定。

  • 你的來源必須是下面:的src/main/java的

  • 你的資源需要下面:SRC /主/資源

  • 你的測試源必須是下面:SRC/test/java下

  • 您的測試資源需要下面:SRC /測試/資源

Maven的第一條規則是約定優於配置。您將重點放在配置位上,而不是遵循約定。如果你不遵循這個慣例,插件就不會找到他們期望的東西。這會導致他們沒有做你想做的事,所以我建議你正確地解決這個問題。

此外,從你的pom.xml刪除此部分:

<sourceDirectory>src</sourceDirectory> 
<resources> 
    <resource> 
    <directory>src</directory> 
    <excludes> 
     <exclude>**/*.java</exclude> 
    </excludes> 
    </resource> 
</resources> 
+0

我這樣做,然後用mvn -package代替jardesc來生成我的jar文件。現在我得到正確文件夾中的資源(即.org/app/resources),但是我還得到了主文件夾(即main/org/app/resources)中資源的重複。 – 2013-03-05 19:36:35

+0

你仍然在做錯事。你的代碼需要在'src/main/java'下 - 例如:'src/main/java/org/app/Foo.java';和你的資源在'src/main/resources'下 - 例如:'src/main/resources/foo.properties'。 – carlspring 2013-03-06 10:51:19

+0

這就是我所擁有的。例如我有這個文件夾:src/main/resources/org/concord/energy3d/resources/icons/snap.png(我也在eclipse中設置src/main/resources作爲源代碼文件夾)。但不知何故,在jar文件中,maven會創建main/resources/org/concord/energy3d/resources/icons/snap.png,而不僅僅是org/concord/energy3d/resources/icons/snap.png。所以看起來像src/main/resources /被打包錯誤,但請注意,src/main/java /的內容在jar文件內是正確打包的。 – 2013-03-06 16:26:35

相關問題