我的公司为使用该软件的 Java API 的项目管理软件编写配套产品。他们发布新的 API 版本及其产品的新版本,以及针对错误修复等的点发布。我们需要支持使用其软件的各种版本(以及扩展,他们的 API)的客户。为了避免不必要的代码重复,我们在产品中定义了配置文件,其中包括每个 API 版本的必要依赖项。
我有一个使用这种技术构建的战争项目,并激活了“api70”配置文件,以及另一个依赖于该战争项目的具有 pom 类型的项目,以便引入战争的依赖项。问题是,在构建第二个项目时,未包含特定于配置文件的依赖项,即使我在构建依赖项目时在 maven 命令行上定义了 -Papi70 也是如此。
有什么办法可以让它工作吗?
在战争项目中:
<!-- 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>
在依赖项目中:
<!-- 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
生成的构建不包括 integrationlibrary 或其任何传递依赖项。