如何从另一个文件加载maven依赖项?

时间:2017-05-02 09:16:30

标签: java maven

我希望有一个“依赖项文件”,以便能够将此文件加载到不同的maven poms中。我的项目中有两个pom,它们在某种程度上相似。我希望第三个pom中的相同配置由工作的poms加载。 这可能吗?

e.g。类似的东西:

<project A>
  <dependencies>
    <file> "depend.xml" </file>
  </dependencies>
  ...

<project B>
  <dependencies>
    <file> "depend.xml" </file>
  </dependencies>
  ...

3 个答案:

答案 0 :(得分:2)

您可以创建父POM文件,您的所有项目都会继承该文件。通过在父POM文件中指定依赖项,版本等,您无需在每个项目中重新指定它们(除非您因任何原因需要覆盖它们)。

有更多信息,请访问:https://www.smartics.eu/confluence/display/BLOG/2013/07/22/Using+Aggregate+and+Parent+POMs

答案 1 :(得分:1)

您可以创建一个分层项目,使A和B成为公共父项的模块,并在那里管理您的依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.package</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Parent</name>
    <modules>
        <module>A</module>
        <module>B</module>
    </modules>
    ...
    <dependencies>
        ....
    </dependencies>
</project>

A

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>A</artifactId>
    <packaging>jar</packaging>
    <name>A</name>
    <parent>
        <groupId>my.package</groupId>
        <artifactId>parent/artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

使用属性

您还可以使用此模式引入变量来组织您的版本。

...
<properties>
   <alib.version>4.7</alib.version>
<properties>
...
<dependencies>
    <dependency>
        <groupId>alib</groupId>
        <artifactId>someArtifact</artifactId>
        <version>${alib.version}</version>
    </dependency>
</dependencies>

答案 2 :(得分:-1)

我不习惯“构建生命周期”的概念。我认为我必须为不同的任务拥有不同的poms。例如一个用于包装,一个用于部署。在我发现我可以将插件执行分配给特定阶段之后,我只能用一个pom来完成这个问题,从而消除了我的整个问题。