为什么有些目标在我“mvn package”时会运行两次?

时间:2013-06-11 09:57:33

标签: maven

可以查看完整的pom.xml文件here。有一件事我不明白,正如主题所说:当我运行mvn package时,某些阶段会运行两次,因为命令的输出显示:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building uri-template 0.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ uri-template ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ uri-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ uri-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 31 source files to /home/fge/src/perso/uri-template/target/classes
[INFO] 
[INFO] --- serviceloader-maven-plugin:1.0.2:generate (default) @ uri-template ---
[INFO] Scanning generated classes for implementations...
[INFO] Generating service file /home/fge/src/perso/uri-template/target/classes/META-INF/services/com.github.fge.msgsimple.serviceloader.MessageBundleProvider
[INFO]   + com.github.fge.uritemplate.URITemplateMessageBundle
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ uri-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:testCompile (default-testCompile) @ uri-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 20 source files to /home/fge/src/perso/uri-template/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ uri-template ---
[INFO] Surefire report directory: /home/fge/src/perso/uri-template/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@31c480e8
Tests run: 513, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.384 sec

Results :

Tests run: 513, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-bundle) @ uri-template ---
[INFO] 
[INFO] --- maven-javadoc-plugin:2.9:jar (default) @ uri-template ---
[INFO] 
[snip]
[INFO] Building jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT-javadoc.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (default) @ uri-template >>>
[INFO] 
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ uri-template ---
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (default) @ uri-template <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (default) @ uri-template ---
[INFO] Building jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT-sources.jar
[INFO] 
[INFO] --- maven-antrun-plugin:1.7:run (default) @ uri-template ---
[INFO] Executing tasks

main:
     [echo] /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT.jar
     [echo] /home/fge/src/perso/uri-template/target/classes/META-INF/services/com.github.fge.msgsimple.serviceloader.MessageBundleProvider
      [jar] Updating jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT.jar
[INFO] Executed tasks
[INFO] 
[INFO] >>> maven-repository-plugin:2.3.1:bundle-create (default) @ uri-template >>>
[INFO] 
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ uri-template ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ uri-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ uri-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 31 source files to /home/fge/src/perso/uri-template/target/classes
[INFO] 
[INFO] --- serviceloader-maven-plugin:1.0.2:generate (default) @ uri-template ---
[INFO] Scanning generated classes for implementations...
[INFO] Generating service file /home/fge/src/perso/uri-template/target/classes/META-INF/services/com.github.fge.msgsimple.serviceloader.MessageBundleProvider
[INFO]   + com.github.fge.uritemplate.URITemplateMessageBundle
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ uri-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:testCompile (default-testCompile) @ uri-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 20 source files to /home/fge/src/perso/uri-template/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ uri-template ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO] 
[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-bundle) @ uri-template ---
[INFO] 
[INFO] --- maven-javadoc-plugin:2.9:jar (default) @ uri-template ---
[INFO] 
[snip]
[INFO] Building jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT-javadoc.jar
[WARNING] Artifact com.github.fge:uri-template:javadoc:javadoc:0.5-SNAPSHOT already attached to project, ignoring duplicate
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (default) @ uri-template >>>
[INFO] 
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ uri-template ---
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (default) @ uri-template <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (default) @ uri-template ---
[WARNING] Artifact com.github.fge:uri-template:java-source:sources:0.5-SNAPSHOT already attached to project, ignoring duplicate
[INFO] 
[INFO] --- maven-antrun-plugin:1.7:run (default) @ uri-template ---
[INFO] Executing tasks

main:
     [echo] /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT.jar
     [echo] /home/fge/src/perso/uri-template/target/classes/META-INF/services/com.github.fge.msgsimple.serviceloader.MessageBundleProvider
      [jar] Updating jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT.jar
[INFO] Executed tasks
[INFO] 
[INFO] <<< maven-repository-plugin:2.3.1:bundle-create (default) @ uri-template <<<
[INFO] 
[INFO] --- maven-repository-plugin:2.3.1:bundle-create (default) @ uri-template ---
[INFO] The following files are marked for inclusion in the repository bundle:

0.) Done
1.) uri-template-0.5-SNAPSHOT.jar
2.) uri-template-0.5-SNAPSHOT-javadoc.jar
3.) uri-template-0.5-SNAPSHOT-sources.jar

Please select the number(s) for any files you wish to exclude, or '0' when you're done.
Separate the numbers for multiple files with a comma (',').

Selection: 
[INFO] Building jar: /home/fge/src/perso/uri-template/target/uri-template-0.5-SNAPSHOT-bundle.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.700s
[INFO] Finished at: Tue Jun 11 11:54:38 CEST 2013
[INFO] Final Memory: 31M/338M
[INFO] ------------------------------------------------------------------------

为什么会这样?我怎么能避免这个?

附带问题:如何防止存储库插件进行交互?

1 个答案:

答案 0 :(得分:7)

您应首先更改maven-source-plugin的配置,如下所示:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

第二,你应该注释掉maven-repository-plugin的执行,因为插件会破坏生命周期:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-repository-plugin</artifactId>
            <version>2.3.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>bundle-create</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

更改上述两件事后,您将无法获得default-compile等的重复执行。