Maven 2 是否根据POM激活配置文件?
我的公司为使用该软件的JavaAPI的项目管理软件编写配套产品。他们发布了新的API版本及其产品的新版本,还发布了用于修复bug的点版本等。我们需要支持使用不同版本软件(以及扩展后的API)的客户端。为了避免不必要的代码重复,我们在产品中定义了配置文件,其中包括每个API版本的必要依赖项 我有一个war项目使用这种技术构建,激活了“api70”配置文件,另一个项目依赖于具有pom类型的war项目,以便引入war的依赖项。问题是,在构建第二个项目时,没有包含特定于概要文件的依赖项,即使我在构建依赖项目时在maven命令行上定义了-Papi70 有什么办法可以让它工作吗 在战争项目中:Maven 2 是否根据POM激活配置文件?,maven-2,profile,dependencies,Maven 2,Profile,Dependencies,我的公司为使用该软件的JavaAPI的项目管理软件编写配套产品。他们发布了新的API版本及其产品的新版本,还发布了用于修复bug的点版本等。我们需要支持使用不同版本软件(以及扩展后的API)的客户端。为了避免不必要的代码重复,我们在产品中定义了配置文件,其中包括每个API版本的必要依赖项 我有一个war项目使用这种技术构建,激活了“api70”配置文件,另一个项目依赖于具有pom类型的war项目,以便引入war的依赖项。问题是,在构建第二个项目时,没有包含特定于概要文件的依赖项,即使我在构建依赖
<!-- API 7.0 profile. -->
<profile>
<id>api70</id>
<dependencies>
<dependency>
<groupId>com.bigcompany</groupId>
<artifactId>integrationlibrary</artifactId>
<version>7.0-a</version>
</dependency>
</dependencies>
<properties>
<apiversion>api70</apiversion>
</properties>
</profile>
生成的构建不包括integrationlibrary或其任何可传递的依赖项。我认为您的问题根本不适用于概要文件。它是关于可传递依赖项如何用于战争包装的。根据设计,它们不起作用:)War归档文件在WEB-INF/lib文件夹中包含其依赖项,或者如果它打包在ear中,它可以与ear库共享库。关于这个问题,你可以读到更多。这是关于骨瘦如柴的战争,但这个话题也涉及到你们的问题 对你来说有趣也是
快速但不优雅的解决方案是将打包形式从war更改为pom(或使用pom打包创建重复的pom)。为什么不创建一个api70 deps pom项目,让war和从属项目都将其拉入、激活配置文件或其他方式
这种方法对我来说非常有效。。。我的POM变得更加整洁。依赖战争的“其他项目”的包装是什么?此项目是否从war项目继承?@user19113:配置文件不可传递,也不可继承。您只能通过父POM共享相同的配置文件来实现这一点。
<!-- Depend on war as type=pom for dependency mediation. -->
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>warproject</artifactId>
<version>${warVersion}</version>
<type>pom</type>
</dependency>
mvn -P api70 clean package