maven中的两个版本的依赖项

时间:2011-09-13 18:23:39

标签: maven

有没有办法可以通过命令切换来改变我的依赖关系?

意思是,我有

<dependency>
            <groupId>api</groupId>
            <artifactId>api</artifactId>
            <version>0.0.1-SNAPSHOT</version>

        </dependency>

        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>

        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>

        </dependency>

以这样的方式设置它,如果我这样做

mvn package -Dprovided

我的有效POM将是

<dependency>
            <groupId>nmsc</groupId>
            <artifactId>nmsc_api</artifactId>
            <version>0.0.1-SNAPSHOT</version>

        </dependency>

        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <scope>provided</scope>
        </dependency>

不使用配置文件,因为配置文件要求我将依赖项放入两次。这有可能吗?

1 个答案:

答案 0 :(得分:2)

如果将变量与变量配对,使用配置文件不需要多次列出依赖项,但如果您只是为单个属性执行此操作,那么您可能只需直接覆盖属性:

<properties>
    <myExeScope>compile<myExeScope>
</properties>

<dependencies>
    <dependency>
        <groupId>nmsc</groupId>
        <artifactId>nmsc_api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <scope>${myExeScope}</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>${myExeScope}</scope>
    </dependency>
</dependencies>

然后您应该能够覆盖指定依赖项的范围:

mvn -DmyExeScope=provided

注意,我没有编译这个,所以如果有拼写错误,请更正它们并注意更正。