maven profile条件依赖

时间:2014-06-11 11:52:36

标签: maven

我有一个pom文件,其中我有1个条件依赖项和一些非条件的其他依赖项(即我希望这两个配置文件存在这些依赖项)。

条件是我是否在tomcat或websphere上部署,所以我相应地命名了我的maven配置文件。

我的问题是如何根据我的个人资料制作单个依赖条件,并且两个配置文件都存在其他依赖项?

我对它进行了拍摄并粘贴了我在下面尝试的内容,但我所拥有的似乎并没有起作用。欢迎一些反馈。

感谢

<!-- tried to put the conditional dependencies in the profile section -->
<profiles>
    <profile>
    <id>tomcat</id>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>        
    </profile>
    <profile>
     <id>websphere</id>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
     </dependencyManagement>
    </profile>
</profiles>

<!-- then list all other non-conditional dependencies -->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    ...
    ...
</dependencies>

1 个答案:

答案 0 :(得分:4)

您的配置文件中不应该有真正的依赖关系管理部分。依赖关系管理用于创建您在模块的依赖关系部分中引用的默认版本的依赖关系列表。您希望在配置文件中具有依赖关系部分。两个服务器上使用的公共依赖项应列在顶级依赖项部分中。

但是,这仍然是一个糟糕的模式,因为您无法在环境之间推广单一构建。如果您创建依赖于容器的依赖项provided范围,然后将库单独部署到服务器,那会更好。

此外,我假设您在此处的代码仅用于演示目的,因为两个容器上的jstl依赖关系相同。