为什么Apache Tomcat Maven插件上传WAR文件两次?

时间:2012-12-21 12:24:47

标签: tomcat maven plugins deployment war

当我使用maven部署WAR时,目标war(完全相同)将被上传到服务器两次。 有人可以解释一下吗?

我在我的模块上使用它:

clean install org.apache.tomcat.maven:tomcat6-maven-plugin:2.0:redeploy 

从日志文件

[INFO] --- maven-war-plugin:2.1.1:war (default-war) @ mobile-server ---
[INFO] Packaging webapp
[INFO] Assembling webapp [mobile-server] in [C:\develope\mobile\mobile-server\target\mobile-server]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\develope\mobile\mobile-server\src\main\webapp]
[INFO] Webapp assembled in [241 msecs]
[INFO] Building war: C:\develope\mobile\mobile-server\target\mobile-server.war
[INFO] 
[INFO] <<< tomcat6-maven-plugin:2.0:redeploy (default-cli) @ mobile-server <<<
[INFO] 
[INFO] --- tomcat6-maven-plugin:2.0:redeploy (default-cli) @ mobile-server ---    
[INFO] Deploying war to http://myserver.eu/pra-mobile-server  
Uploading: http://myserver.eu/manager-test/deploy?path=%2Fmobile-server&update=true
Uploaded: http://myserver.eu/manager-test/deploy?path=%2Fmobile-server&update=true (12678 KB at 49.3 KB/sec)

Uploading: http://myserver.eu/manager-test/deploy?path=%2Fmobile-server&update=true
Uploaded: http://myserver.eu/manager-test/deploy?path=%2Fmobile-server&update=true (12678 KB at 50.9 KB/sec)

我的主要pom.xml看起来像这样:

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>eu.company.prj.pramobile</groupId>
    <artifactId>mobile-parent</artifactId>
    <relativePath>../mobile-parent/pom.xml</relativePath>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>mobile-server</artifactId>
<packaging>war</packaging>
<name>mobile server</name>

<properties>
    <version.standard.taglibs>1.1.2</version.standard.taglibs>
</properties>


<repositories>
        <repository>
            <id>com.springsource.repository.libs-milestone</id>
            <name>SpringSource Enterprise Bundle Repository - libs</name>
            <url>http://repo.springsource.org/libs-milestone/</url>
        </repository>
 </repositories>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>mobile-test</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>mobile-common</artifactId>
        <version>${project.version}</version>
    </dependency>


    <!-- Import Spring dependencies, these are either from community or versions
        certified in WFK2 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-asm</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${version.spring}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${version.spring}</version>
    </dependency>


    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.7</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.springmodules</groupId>
        <artifactId>spring-modules-cache</artifactId>
        <version>0.8a</version>
        <!-- Unfortunately design of spring cache module is not the best - we
            need to exclude not necessary dependencies -->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>gigaspaces</groupId>
                <artifactId>gigaspaces-ce</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>jsk-lib</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>jsk-platform</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>mahalo</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>reggie</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>start</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>boot</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jini</groupId>
                <artifactId>webster</artifactId>
            </exclusion>
            <exclusion>
                <groupId>commons-attributes</groupId>
                <artifactId>commons-attributes-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>commons-attributes</groupId>
                <artifactId>commons-attributes-compiler</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>javassist</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>jboss-cache</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>jboss-common</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>jboss-jmx</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>jboss-minimal</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>jboss-system</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jcs</groupId>
                <artifactId>jcs</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jgroups</groupId>
                <artifactId>jgroups-all</artifactId>
            </exclusion>
            <exclusion>
                <groupId>geronimo-spec</groupId>
                <artifactId>geronimo-spec-jta</artifactId>
            </exclusion>
            <exclusion>
                <groupId>xpp3</groupId>
                <artifactId>xpp3_min</artifactId>
            </exclusion>
            <exclusion>
                <groupId>xjavadoc</groupId>
                <artifactId>xjavadoc</artifactId>
            </exclusion>
            <exclusion>
                <groupId>opensymphony</groupId>
                <artifactId>oscache</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${version.quartz}</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.1</version>
    </dependency>

    <!--mockito for test-->
    <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-all</artifactId>
         <version>1.9.5</version>
         <scope>test</scope>
     </dependency>

    <dependency>
      <groupId>org.kubek2k</groupId>
      <artifactId>springockito</artifactId>
      <version>1.0.4</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.kubek2k</groupId>
      <artifactId>springockito-annotations</artifactId>
      <version>1.0.5</version>
      <scope>test</scope>
    </dependency>

    <!--testing MVC controllers-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test-mvc</artifactId>
      <version>1.0.0.M2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>

</dependencies>

<build>

    <finalName>mobile-server</finalName>

    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.10</version>
            <configuration>
                <jettyEnvXml>${basedir}/src/test/resources/jetty-env.xml</jettyEnvXml>
                <!-- Solves locked problem for JSP while jetty is running -->
                <webDefaultXml>src/test/resources/webdefault.xml</webDefaultXml>
                <stopKey>0</stopKey>
                <stopPort>8001</stopPort>
                <scanIntervalSeconds>5</scanIntervalSeconds>
                <systemProperties>
                    <systemProperty>
                        <name>org.apache.commons.logging.Log</name>
                        <value>org.apache.commons.logging.impl.SimpleLog</value>
                    </systemProperty>

                    <systemProperty>
                        <name>log4j.configurationFile</name>
                        <value>file:${project.basedir}/src/main/resources/log4j.xml</value>
                    </systemProperty>

                </systemProperties>

            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.9</version>
                </dependency>
            </dependencies>
        </plugin>
        <!-- Surefire plugin before 2.9 version is buggy -->
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <parallel>true</parallel>
                <threadCount>10</threadCount>
                <systemPropertyVariables>
                    <java.awt.headless>true</java.awt.headless>
                </systemPropertyVariables>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <!--to avoid maven error message-->
            <configuration>
                <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
            </configuration>
        </plugin>

        <!--import objects from schema generation-->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <encoding>UTF-8</encoding>
                <extension>true</extension>
                <packageName>eu.company.prj.pra.mobile.server.generated.place1</packageName>
                <schemaDirectory>src/main/resources/META-INF/schema</schemaDirectory>
                <outputDirectory>${basedir}/src/main/java/</outputDirectory>
                <failOnNoSchemas>true</failOnNoSchemas>
                <clearOutputDir>false</clearOutputDir>
            </configuration>
        </plugin>

        <!-- mvn tomcat plugin alternative - run -->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat6-maven-plugin</artifactId>
          <version>2.0</version>
            <configuration>             
                <systemProperties>-Dmaven.tomcat.uriEncoding=UTF-8</systemProperties>
                <url>${tomcat-maven-plugin.url}</url>
                <username>${tomcat-maven-plugin.username}</username>
                <password>${tomcat-maven-plugin.password}</password>
            </configuration>
        </plugin>

        <!-- mvn tomcat plugin alternative - run -->
        <!--<plugin>-->
            <!--<groupId>org.codehaus.mojo</groupId>-->
            <!--<artifactId>tomcat-maven-plugin</artifactId>-->
            <!--<configuration>-->
                <!--<contextFile>${basedir}/src/test/resources/tomcat-context.xml</contextFile>-->
                <!--<url>${tomcat-maven-plugin.url}</url>-->
                <!--<username>${tomcat-maven-plugin.username}</username>-->
                <!--<password>${tomcat-maven-plugin.password}</password>-->
            <!--</configuration>-->
            <!--<dependencies>-->
                <!--<dependency>-->
                    <!--<groupId>mysql</groupId>-->
                    <!--<artifactId>mysql-connector-java</artifactId>-->
                    <!--<version>5.1.9</version>-->
                <!--</dependency>-->
            <!--</dependencies>-->
        <!--</plugin>-->

    </plugins>
</build>

更新 父母:

http://maven.apache.org/xsd/maven-4.0.0.xsd“&GT;     4.0.0

<groupId>eu.company.prj.mobile</groupId>
<artifactId>mobile-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>mobile project parent</name>

<properties>
    <version.spring>3.1.1.RELEASE</version.spring>
    <version.jackson>1.9.11</version.jackson>
    <version.commons.logging>1.1.1</version.commons.logging>
    <version.quartz>2.1.6</version.quartz>
    <slf4j.version>1.5.8</slf4j.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <!-- Force Java 6 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <encoding>${project.build.sourceEncoding}</encoding>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<profiles>
        just properties with u/p ...
</profiles>

谢谢你的提示。

2 个答案:

答案 0 :(得分:0)

试一试并运行没有安装目标的mvn cmd行。

答案 1 :(得分:0)

最近,在将我的战争上传到测试服务器期间,我遇到了同样的问题。我曾多次尝试在互联网上找到这个问题的答案但没有成功。无意中,我发现了我的问题,我在这里分享,因为这可能对某人有帮助(但是,我不确定这是否是你的情况)。

所以在我的情况下,双重上传战争是由于我转发端口的原因造成的。 Tomcat通常在8080端口上运行。为了强制它在80端口上工作,我配置了我的服务器(使用iptables),它只是将请求从80转发到8080端口。对于tomcat maven插件配置,我只是使用ip上传,而没有指定8080端口。这会导致maven插件上传两次战争(第一个请求是重定向,第二个是实际上传)。

只需将插件配置中的端口更改为8080即可解决我的问题。