从 WAR 中存在的 jar 中排除 .java

Excluding .java from a jar present in a WAR

我有两个 Maven 项目,P1 在编译时需要 P2 的 java-sources。所以,我在 P2 的 jar 中包含了源代码,作为依赖项包含在 P1 的 pom.xml 中。我如何从最终 war 创建中排除那些 .java 文件?

或者,P1的jar有没有更好的打包方式?

更好的方法是创建和部署一个单独的 JAR,其中包含 P2 的源代码,并将其添加为 P1 中 GWT 编译的依赖项。

对于源代码 JAR,请查看 maven-sources-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <id>attach-sources</id>
        <phase>verify</phase>
        <goals>
          <goal>jar-no-fork</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

如果将此添加到 POM 的构建部分,构建将创建一个带有分类器 'sources' 的单独 JAR。

然后您可以将此工件作为依赖项添加到 Maven GWT 编译器插件中:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>2.7.0</version>
    <compileSourcesArtifacts>
      <compileSourcesArtifact>your.groupId:artifactId</compileSourcesArtifact>
    </compileSourcesArtifacts>
  </plugin>