如何在pom.xml中处理Web服务器的不同依赖性要求

时间:2014-05-28 01:38:30

标签: java maven tomcat primefaces glassfish

我正在尝试编写一个可以使用JSF和PrimeFaces在WildFly 8,Tomcat 7和GlassFish 4上运行的应用程序。这是我的情况

WildFly 我不包含任何内容

对于 GlassFish ,我需要包含:

     <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.2.5</version>
    </dependency> 

对于 TomCat ,我需要包含

     <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.2.5</version>
    </dependency> 
     <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency> 

我对Maven比较陌生,但我希望能够组建一个让人们“轻松”运行的项目。我会制作不同的“指令”来构建特定于Web容器的版本吗?我需要3个独立的pom文件吗? maven有条件包括吗?我是否有pom-tomcat.xml pom-glassfish.xml pom-wildfly.xml,不知何故你指向其中一个文件并包含其他内容?

任何建议都会有所帮助。

由于

1 个答案:

答案 0 :(得分:1)

我认为使用Maven实现它的最简单方法是使用Maven profiles,例如:

    <profiles>
        <profile>
            <id>tomcat</id>
            <dependencies>
                <dependency><!--tomcat dependencies--></dependency>
            </dependencies>
        </profile>
        <profile>
            <id>glassfish</id>
            <dependencies>
                <dependency><!--glassfish dependencies--></dependency>
            </dependencies>
        </profile>
    </profiles>

然后你可以为glassfish或tomcat构建它:

    mvn -P glassfish
    mvn -P tomcat

(旁边的问题是为什么不在所有情况下都包含所有相同的依赖项?)