Java maven项目中编译文件的条件排除
在maven项目中,有条件地从编译中排除java文件的最简单/正确的方法是什么 我希望能够在pom.xml中设置“布尔”属性:Java maven项目中编译文件的条件排除,java,file,maven,compilation,Java,File,Maven,Compilation,在maven项目中,有条件地从编译中排除java文件的最简单/正确的方法是什么 我希望能够在pom.xml中设置“布尔”属性: <properties> <IncludeMayBe>true</IncludeMayBe> </properties> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact
<properties>
<IncludeMayBe>true</IncludeMayBe>
</properties>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<excludes>
????
</excludes>
</configuration>
</plugin>
真的
...
org.apache.maven.plugins
maven编译器插件
2.3.2
????
有没有办法修改编译器插件?还是我应该去看个人资料?我觉得创建个人资料有些过分,但这可能是唯一的解决方案
编辑:
我们已经确定,配置文件是解决方案。对于pom.xml中的条件激活,可以使用以下选项:
<profiles>
<profile>
<activation>
<property>
<IncludeMayBe>true</IncludeMayBe>
</property>
</activation>
...
</profile>
</profiles>
真的
...
您不能使用编译器插件(见下文)执行此操作
但即使你可以,也感觉不对。这意味着工件JAR文件中的文件将取决于命令行开关和/或环境设置,这使得其他人很难复制构建
我的直觉是,最好将maven项目模块化,并使用概要文件来确定构建哪些模块
我看了一下编译器插件mojo的源代码,似乎没有办法配置源代码包含/排除过滤器。某些时候,有人实现了过滤器,但是相关的
Map
对象是私有的,无法填充它们,因此无法使用此功能
代码如下:
我想你可以破解你自己版本的插件。。。但这似乎是个坏主意。我建议您使用。
使用它,您可以拥有多个源目录。
然后,您可以使用配置文件控制包含哪些源目录
假设您的监控类位于src/monitoring/java下,您可以将以下内容添加到pom.xml中的元素中
<profiles>
<profile>
<id>monitoring</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/src/monitoring/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
监测
org.codehaus.mojo
构建助手maven插件
1.5
添加源
生成源
添加源
${basedir}/src/monitoring/java
在我们的案例中,这不是一个问题(即复制构建)。我们对此很满意。您试图用这种排除法解决的根本问题是什么?我觉得可能有一个比选择性地排除源文件更直观的解决方案。例如,在一个大型项目中,您可能希望开发辅助代码来检查应用程序的行为,并能够在测试环境中运行时收集数据。但在生产中,您不想要或不需要该代码。删除它会创建更小、更优化的JAR。您正在查找配置文件。我已经看过这个插件,但它似乎没有启用代码的“有条件”包含/排除。我遗漏了什么吗?你需要用maven配置文件来控制它。对于带有额外监控的jar用于测试的用例,我会有一个名为“监控”的配置文件,其中包含添加额外源文件夹的build helper插件,然后使用“mvn clean install-Pmonitoring”或只使用“mvn clean install”来构建它,而不使用额外的类。好的,那么,它将是配置文件。至少,这个问题已经澄清了。好吧,这个答案是8年前写的,但现在我想知道它是否可以用来添加额外的Kotlin源代码,而不仅仅是Java源代码。