运行具有不同配置的多个maven执行。除非以id为目标,否则maven会忽略配置的配置

时间:2018-05-03 18:03:50

标签: maven tomcat maven-plugin maven-tomcat-plugin maven-profiles

我正在尝试使用tomcat7-maven-plugin将我的web-app部署到运行Tomcat的多个服务器上。

以下是我的pom.xml文档的一部分:

<profiles>
    <profile>
        <id>DevDeployment</id>
        <activation>
            <property>
                <name>!production</name>
            </property>
        </activation>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>  
                        <groupId>org.apache.tomcat.maven</groupId>  
                        <artifactId>tomcat7-maven-plugin</artifactId>  
                        <version>2.2</version>
                    </plugin>
                </plugins>
            </pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>  
                    <artifactId>tomcat7-maven-plugin</artifactId>  
                    <executions>
                        <execution>
                            <id>localhost</id>     
                            <configuration>  
                                <source>1.8</source>
                                <target>1.8</target>
                                <url>http://127.0.01:8080/manager/text</url>  
                                <server>TomcatServer</server>
                                <username>foo</username>  
                                <password>boo</password>   
                            </configuration>
                        </execution>
                        <execution>
                            <id>devserver</id>
                            <configuration>  
                                <source>1.8</source>
                                <target>1.8</target>
                                <url>http://dev_server_ip:8080/manager/text</url>  
                                <server>TomcatServer</server>
                                <username>foo</username>  
                                <password>boo</password>   
                            </configuration>
                        </execution>
                    </executions>  
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>ProductionDeployment</id>
        <activation>
            <property>
                <name>production</name>
            </property>
        </activation>
        <build>
             <pluginManagement>
                <plugins>
                    <plugin>  
                        <groupId>org.apache.tomcat.maven</groupId>  
                        <artifactId>tomcat7-maven-plugin</artifactId>  
                        <version>2.2</version>
                    </plugin>
                </plugins>
            </pluginManagement>
            <plugins>
                <plugin>  
                    <groupId>org.apache.tomcat.maven</groupId>  
                    <artifactId>tomcat7-maven-plugin</artifactId>  
                    <version>2.2</version>  
                <executions>
                        <execution>
                            <id>production1</id>     
                            <configuration>  
                                <source>1.8</source>
                                <target>1.8</target>
                                <url>http://production1_ip:8080/manager/text</url>  
                                <server>TomcatServer</server>
                                <username>foo</username>  
                                <password>boo</password>   
                            </configuration>
                        </execution>
                        <execution>
                            <id>production2</id>
                            <configuration>  
                                <source>1.8</source>
                                <target>1.8</target>
                                <url>http://production2_ip:8080/manager/text</url>  
                                <server>TomcatServer</server>
                                <username>foo</username>  
                                <password>boo</password>   
                            </configuration>
                        </execution>
                    </executions>  
                </plugin>   
            </plugins>
        </build>
    </profile>
</profiles>

我想要实现的是拥有两个不同的maven配置文件,首先运行它将应用程序部署到2个dev服务器,并通过激活其他服务器将应用程序部署到2个生产服务器。

所以当我运行命令时:

mvn tomcat7:redeploy -Dproduction

它进入生产服务器,当我运行

mvn tomcat7:redeploy

它转到开发服务器。

我已经成功制作了个人资料,并且通过运行这些命令,它选择了正确的命令并运行它。

当我使用不同的<executions>标签定义多个<configuration>时,会出现问题,maven会忽略这些配置并运行默认配置。

仅当我运行mvn tomcat7:redeploy@localhostmvn tomcat7:redeploy@devserver并直接通过Id执行目标时才有效。

显然,目标是必须只运行2个命令:mvn tomcat7:redeploy -Dproductionmvn tomcat7:redeploy,以便将应用程序部署到所有生产或开发服务器。

是否可以通过执行或其他方式实现?

0 个答案:

没有答案