我们有一个公司范围的Super Pom,用于定义我们使用的许多默认值。例如,Super Pom定义要使用的JDK版本以及其他参数。这由我们的项目继承为父pom。
我们的大多数项目都使用JDK1.7,但有一组项目仍在JDK1.6版本上。我在我的父母pom中添加了以下配置文件定义:
<properties>
<travelclick.snapshot.repo>artifactory/libs-snapshot-local</travelclick.snapshot.repo>
<old.javac.source>1.5</old.javac.source>
<old.javac.target>1.6</old.javac.target>
</properties>
<profiles>
...
<profile>
<id>jdk1.6</id>
<build>
<plugins>
<plugin>
<groupId>com.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<...>
<source>${old.javac.source}</source>
<target>${old.javac.target}</target>
<...>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<...>
</profiles>
现在,我有一个名为jdk1.6
的配置文件,我想在项目的pom中指定它应该默认使用这个。我该怎么做?
我尝试在项目的pom中添加:
<profiles>
<profile>
<id>jdk1.6</id>
<activations>
<activeByDefault>true</activeByDefault>
</activations>
</profile>
</profile>
但这重新定义了我的jdk1。6个人资料。
我试着把这个放进去:
<activeProfiles>
<activeProfile>jdk1.6</activeProfile>
</activeProfiles>
但这只适用于settings.xml
。
如何在父pom中指定配置文件,然后说这是子pom中的活动配置文件?
我尝试过使用属性。在我的父pom.xml:
<profiles>
<profile>
<id>jdk1.6</id>
<activation>
<property>
<name>use-jdk1.6</name>
</property>
</activation>
<profile>
</profiles>
在我当地的pom中有以下内容:
<properties>
<use-jdk1.6>true</use-jdk1.6>
</properties>
但是,这并不能反映个人资料。这确实有效:
$ mvn -Puse-jdk1.6 clean package site
所以,我知道父配置文件确实有效。
你能添加你的个人资料详细信息吗?执行目标帮助:所有个人资料
[INFO] Listing Profiles for Project: xxxx
Profile Id: artifactory (Active: true , Source: settings.xml)
Profile Id: jdk1.6 (Active: false , Source: pom)
Profile Id: arse-version (Active: false , Source: pom)
Profile Id: urge (Active: false , Source: pom)
我可以激活jdk1。6从命令行。我只想在我的孩子poms中将其作为默认值激活。
我在尖叫。
我发现了问题以及为什么这不起作用。
在我的父母pom中,我有以下内容:
<properties>
<javac.source>1.7</javac.source>
<javac.source>1.7</javac.source>
<old.javac.source>1.7</old.javac.source>
<old.javac.source>1.7</old.javac.source>
...
</properties>
<profiles>
<profile>
<id>jdk1.6</id>
<activation>
<property>
<name>use-jdk1.6</name>
</property>
</activation>
<build>
<plugins>
....
<plugin>
<groupId>maven-compiler-plugin</groupId>
...
<configuration>
<!-- This isn't doing what I think -->
<source>${old.javac.source}</source>
<target>${old.javac.target}</source>
...
</configuration>
</plugin>
</plugins>
<profile>
在我的孩子pom中,我有这样的:
<properties>
<use-jdk1.6>true</use-jdk1.6>
</properties>
而且,设置似乎需要使用-jdk1。6
property就是不起作用。然而,事实并非如此。我正在设置个人资料。
如果我有系统属性javac。source
和javac。目标
set,它会覆盖maven编译器pluing
的配置(尽管我已经明确设置了
所以,我在这个问题上花了六个小时才意识到这是因为我设置了一个名为
javac的属性。源代码
而不是类似于java版本
。
当前情景: 父pom有一个distributionManagement部分,其中定义了两个存储库(发布和快照);请参阅以下内容: 父pom: 基于同一pom中指定的“版本”,maven会自动识别是在发布中部署工件还是在nexus中部署快照存储库。(我相信这是使用版本是否有任何“-SNAPSHOT”后缀来完成的。) 有一个子pom定义了一些部署文件目标;请参阅以下内容: 儿童pom: 问题: 正如您
我们的企业团队维护设置。xml文件,该文件定义了开发项目可以与Maven一起使用的各种概要文件,以构建其构件并将其安装到存储库中。我们期望Jenkins中的每个项目都会使用指定的所需概要文件定义一个-P参数。 这是我的问题:我需要使用的配置文件指定了一个通常对我的项目不可见的存储库(分阶段发布存储库),因此如果该配置文件处于活动状态,则无法依赖该存储库中的任何内容。我需要一种方法来激活我项目的文件
Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?
问题内容: 我使用的父POM定义了我不想在子POM中运行的插件。如何完全禁用子pom中的插件? 约束:我不能更改父POM本身。 问题答案: 在禁用子POM中的Findbugs时,以下对我有用: 注意:Findbugs插件的完整定义在我们的父/超级POM中,因此它将继承该版本等。 在Maven 3中,您需要使用: 用于插件。
应用程序-dev.properties application.prod.properties 然后,我有一个pom,它将spring-boot pom作为父pom 然后我按以下方式设置配置文件:
我有一组项目,它们都需要在构建期间运行相同系列的Maven插件执行。我想避免在每个项目中重新声明所有这些配置,所以我让它们都从一个只包含那些插件执行(8个不同的mojo)的父pom“模板”项目继承。但我希望在Maven构建期间,这些插件执行只在子项目上运行,而不在父项目上运行。 > 在父POM的元素中声明插件执行,并使用properties-maven-plugin打开父项目中其他插件的属性。这没