Java 使用build helper maven插件从Jar中排除文件

Java 使用build helper maven插件从Jar中排除文件,java,maven,jar,Java,Maven,Jar,我有一些与测试相关的类,我想从项目的编译jar输出中排除它们。这是一个遗留项目,我不想因为将类移动到src/test而丢失现有的修订历史。因为我已经在使用build helper maven插件,所以我想我可以在那里指定一个排除模式,但到目前为止,我所尝试的一切似乎都不起作用。我跑 mvn清洁安装包 在我的项目根目录中,我看到日志消息 [信息]---构建助手maven插件:3.0.0:添加源代码(添加源代码)@ Person ejb---[INFO]源目录: /媒体/psf/Home/Docum

我有一些与测试相关的类,我想从项目的编译jar输出中排除它们。这是一个遗留项目,我不想因为将类移动到src/test而丢失现有的修订历史。因为我已经在使用build helper maven插件,所以我想我可以在那里指定一个排除模式,但到目前为止,我所尝试的一切似乎都不起作用。我跑

mvn清洁安装包

在我的项目根目录中,我看到日志消息

[信息]---构建助手maven插件:3.0.0:添加源代码(添加源代码)@ Person ejb---[INFO]源目录: /媒体/psf/Home/Documents/workspace/optics/optics/Person/ejb/src 补充说

但是当我查看编译后的jar时,它仍然包含测试目录及其内容。知道我做错了什么吗

My pom.xml:

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            
            <executions>
              <execution>
                <id>add-source</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>src/</source>
                  </sources>
                  <excludes>
                    <exclude>**/test/**</exclude>
                  </excludes>
                </configuration>
              </execution>
              
              <execution>
                <id>add-reource</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>add-resource</goal>
                </goals>
                <configuration>
                  <resources>
                    <resource>
                        <directory>resources/</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>

org.codehaus.mojo
构建助手maven插件
添加源
生成源
添加源
src/
**/试验/**
添加资源
产生资源
添加资源
资源/
Context 我相信这是build helper maven插件中的一个bug,或者可能是使用中的一个打印错误。插件完全忽略了
标记

它甚至没有出现在Eclipse的代码完成中

解决方案 虽然不能排除builder helper maven插件中的文件,但可以排除maven编译器插件中的文件。因此,如果您只是将以下配置添加到maven编译器插件中,它应该排除
**/test/**
目录

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <release>11</release>
        <excludes>
            <exclude>**/test/**</exclude>
        </excludes>
    </configuration>
</plugin>

org.apache.maven.plugins

在马文。理想情况下,您应该为每个源目录创建单独的pom文件,然后将它们作为单独的模块添加到父pom文件中。我意识到这可能是一项更大的重构工作,尽管我不明白这一点:`我不想因为将类移动到src/test而丢失现有的修订历史记录。`这正是版本控制系统想要记录的。。。将类/文件移动到正确的位置(
src/main/java
src/test/java
src/main/resources
和`src/test/resources等);你可以去掉BuildHelperMaven插件。。。等等。此外,请阅读maven生命周期,因为
mvn clean install package
这意味着您正在重复运行多个项目。。。仅使用
mvn清洁包装
。。。或者,如果您有集成测试,请使用
mvn clean verify
,但不要使用
install
…@khmarbaise,install命令只是一个遗留命令。通常我通过maven wildfly插件运行东西,但我试图在一个较低的级别运行东西来解决我的问题。通过wildfly运行将无法正确处理事情。。。据我所知,wildfly插件仅用于部署?@khmarbaise只是为了澄清这段历史。如果我在一个文件上做一个git mv,它会打破保管链。我今后所做的任何更改都将被记录下来。但是,如果我想在移动之前将更改与某个点进行比较,这是不可能的,因为git将移动的资源视为一个新文件。我认为您是正确的。再次查看buildhelper插件的文档,我混淆了源代码和资源的示例。Excludes仅对资源可用,对源不起作用。我将尝试你的建议与编译器插件,看看是否有帮助。是的,请报告回来,让我知道它是否适用于您的用例。我在研究同样的问题时遇到了你的问题,尝试了这个实现,它对我来说很好