2

我的 jardesc 一直运行良好,直到昨天我将项目转换为 maven。

现在由于某种原因,当我创建一个包含代码和包的 jar 文件:org.javacode 和 org.resource 时,我在 jar 文件中得到以下文件夹:

org/javacode src/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&lt;org.concord.energy3d.gui"/>
<javaElement handleIdentifier="=Energy3D/src&lt;org.concord.energy3d.resources.images"/>
4

1 回答 1

0

您没有遵循 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>
于 2013-03-04T11:27:45.457 回答