Java 使用build helper maven插件从Jar中排除文件
我有一些与测试相关的类,我想从项目的编译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: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
<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仅对资源可用,对源不起作用。我将尝试你的建议与编译器插件,看看是否有帮助。是的,请报告回来,让我知道它是否适用于您的用例。我在研究同样的问题时遇到了你的问题,尝试了这个实现,它对我来说很好