当我为root
项目运行以下命令时,它会检查所有依赖项的更新:
mvn versions:use-latest-versions
我想限制只能从root
可以访问的依赖项的版本更新:
root/pom.xml
├── A/pom.xml
│ └── D/pom.xml
│ └── E/pom.xml
├── B/pom.xml
└── C/pom.xml
├── F/pom.xml
└── G/pom.xml
这些依赖项的组和工件ID在当前的reactor构建中(多模块构建)。
例如,我不想要更新junit
或commons-logging
等外部依赖项。
有一个选项 excludeReactor 。我需要像 includeOnlyReactor 这样的对手。
否则,通过 includes 选项指定项目“拥有”所有可能的工件模式是不可靠和繁琐的工作。
答案 0 :(得分:0)
将模块依赖关系版本设置为${project.version}
良好的做法是在root pom的dependencyMnaagement部分中执行此操作。
示例:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules
<dependencyManagement>
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</dependency>
...And so on....
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>G</artifactId>
<version>${project.version}</version>
</dependency>
</dependencyManagement>
</project>
然后,只要您想在另一个模块中使用该模块(例如B中的模块G),您只需
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>B</artifactId>
</dependency>
要更改项目版本,请使用mvn versions:set
。这将使所有模块保持在同一版本中,并且依赖关系管理部分也将依赖关系保持在同一版本中。
显然,如果您希望始终将模块保持在同一版本中,它将无法工作。但无论如何这将更加棘手。