Maven 2 是否根据POM激活配置文件?

Maven 2 是否根据POM激活配置文件?,maven-2,profile,dependencies,Maven 2,Profile,Dependencies,我的公司为使用该软件的JavaAPI的项目管理软件编写配套产品。他们发布了新的API版本及其产品的新版本,还发布了用于修复bug的点版本等。我们需要支持使用不同版本软件(以及扩展后的API)的客户端。为了避免不必要的代码重复,我们在产品中定义了配置文件,其中包括每个API版本的必要依赖项 我有一个war项目使用这种技术构建,激活了“api70”配置文件,另一个项目依赖于具有pom类型的war项目,以便引入war的依赖项。问题是,在构建第二个项目时,没有包含特定于概要文件的依赖项,即使我在构建依赖

我的公司为使用该软件的JavaAPI的项目管理软件编写配套产品。他们发布了新的API版本及其产品的新版本,还发布了用于修复bug的点版本等。我们需要支持使用不同版本软件(以及扩展后的API)的客户端。为了避免不必要的代码重复,我们在产品中定义了配置文件,其中包括每个API版本的必要依赖项

我有一个war项目使用这种技术构建,激活了“api70”配置文件,另一个项目依赖于具有pom类型的war项目,以便引入war的依赖项。问题是,在构建第二个项目时,没有包含特定于概要文件的依赖项,即使我在构建依赖项目时在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>

生成的构建不包括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