我的jardesc一直工作得很好,直到昨天我把我的项目转换成maven。
现在,由于某些原因,当我创建一个包含代码和包的jar文件时:Javacode和org。资源,我在jar文件中得到以下文件夹:
org/javacodesrc/org/resource
它似乎对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包被正确地放置在org/concord/energy3d/gui中,然而,当创建jar文件时,图像包被错误地放置在src/org/concord/energy3d/resources/images中):
<javaElement handleIdentifier="=Energy3D/src<org.concord.energy3d.gui"/>
<javaElement handleIdentifier="=Energy3D/src<org.concord.energy3d.resources.images"/>
您没有遵循Maven约定。
-
你的源代码需要在下面:src/main/java
-
你的资源需要在下面:src/main/resources
-
你的测试源需要在下面:src/test/java
-
你的测试资源需要在下面:src/test/resources
Maven的第一条规则是约定优于配置。您关注的是配置位,而不是遵循约定。如果你不遵循惯例,插件就不会在他们期望的地方找到东西。这将导致他们不做你想要的,所以我建议你妥善解决这个问题。
同时,从您的pom.xml中删除这部分:
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>