マルチモジュールのMavenプロジェクトがあります。このプロジェクトには、自作のMavenプラグインとこのプラグインのテストプロジェクトが含まれています。test
maven-surefire-pluginの前に段階的にプラグインを実行したいpom.xmlのプラグインの後にmaven-surefire-pluginを配置します
<build>
<plugins>
<plugin>
<groupId>com.my.group</groupId>
<artifactId>validator-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
ただし、maven-surefire-pluginは引き続き最初に実行されます。
[INFO] ------------------------------------------------------------------------
[INFO] Building PC_TEST_PROJECT 0.23-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ PC_TEST_PROJECT ---
[INFO] Deleting C:\validator\PC_TEST_PROJECT\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ PC_TEST_PROJECT ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\validator\PC_TEST_PROJECT\src\main\java
[INFO] skip non existing resourceDirectory C:\validator\PC_TEST_PROJECT\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ PC_TEST_PROJECT ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ PC_TEST_PROJECT ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ PC_TEST_PROJECT ---
[INFO] Compiling 1 source file to C:\validator\PC_TEST_PROJECT\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ PC_TEST_PROJECT ---
[INFO] Surefire report directory: C:\validator\PC_TEST_PROJECT\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.my.group.validator.MainTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.657 sec - in com.my.group.validator.MainTest
Results :
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] >>> validator-maven-plugin:0.23-SNAPSHOT:validate (default) > test @ PC_TEST_PROJECT >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ PC_TEST_PROJECT ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\validator\PC_TEST_PROJECT\src\main\java
[INFO] skip non existing resourceDirectory C:\validator\PC_TEST_PROJECT\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ PC_TEST_PROJECT ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ PC_TEST_PROJECT ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ PC_TEST_PROJECT ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ PC_TEST_PROJECT ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default) @ PC_TEST_PROJECT ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO]
[INFO] <<< validator-maven-plugin:0.23-SNAPSHOT:validate (default) < test @ PC_TEST_PROJECT <<<
[INFO]
[INFO] --- validator-maven-plugin:0.23-SNAPSHOT:validate (default) @ PC_TEST_PROJECT ---
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default) @ PC_TEST_PROJECT ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] validator-parent ................................... SUCCESS [ 0.175 s]
[INFO] validator .......................................... SUCCESS [ 6.038 s]
[INFO] validator-maven-plugin ............................. SUCCESS [ 2.012 s]
[INFO] PC_TEST_PROJECT .................................... SUCCESS [ 2.762 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.298 s
[INFO] Finished at: 2015-07-05T00:46:59+03:00
[INFO] Final Memory: 21M/51M
[INFO] ------------------------------------------------------------------------
maven-surefire-pluginの予想される動作ですか?プラグインの実行順序を変更するにはどうすればよいですか?
これを試してください:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ch.stefanheimberg.stackoverflow</groupId>
<artifactId>stackoverflow-31225404</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>run-before-surfire</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message=" !!!! THIS SHOULD RUN BEFORE SUREFIRE !!!! " />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>default-test</id>
<phase>none</phase>
</execution>
<execution>
<id>run-after-antrun</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
およびコンソール出力:
cd /Users/stefanheimberg/git/stackoverflow-31225404; JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home "/Applications/NetBeans/NetBeans 8.0.2.app/Contents/Resources/NetBeans/java/maven/bin/mvn" clean install
Scanning for projects...
Some problems were encountered while building the effective model for ch.stefanheimberg.stackoverflow:stackoverflow-31225404:jar:1.0-SNAPSHOT
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 31, column 21
It is highly recommended to fix these problems because they threaten the stability of your build.
For this reason, future Maven versions might no longer support building such malformed projects.
------------------------------------------------------------------------
Building stackoverflow-31225404 1.0-SNAPSHOT
------------------------------------------------------------------------
--- maven-clean-plugin:2.4.1:clean (default-clean) @ stackoverflow-31225404 ---
Deleting /Users/stefanheimberg/git/stackoverflow-31225404/target
--- maven-resources-plugin:2.5:resources (default-resources) @ stackoverflow-31225404 ---
[debug] execute contextualize
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory /Users/stefanheimberg/git/stackoverflow-31225404/src/main/resources
--- maven-compiler-plugin:2.3.2:compile (default-compile) @ stackoverflow-31225404 ---
No sources to compile
--- maven-resources-plugin:2.5:testResources (default-testResources) @ stackoverflow-31225404 ---
[debug] execute contextualize
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory /Users/stefanheimberg/git/stackoverflow-31225404/src/test/resources
--- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ stackoverflow-31225404 ---
No sources to compile
--- maven-antrun-plugin:1.3:run (run-before-surfire) @ stackoverflow-31225404 ---
Executing tasks
[echo] !!!! THIS SHOULD RUN BEFORE SUREFIRE !!!!
Executed tasks
--- maven-surefire-plugin:2.10:test (run-after-antrun) @ stackoverflow-31225404 ---
No tests to run.
Surefire report directory: /Users/stefanheimberg/git/stackoverflow-31225404/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
--- maven-jar-plugin:2.3.2:jar (default-jar) @ stackoverflow-31225404 ---
JAR will be empty - no content was marked for inclusion!
Building jar: /Users/stefanheimberg/git/stackoverflow-31225404/target/stackoverflow-31225404-1.0-SNAPSHOT.jar
--- maven-install-plugin:2.3.1:install (default-install) @ stackoverflow-31225404 ---
Installing /Users/stefanheimberg/git/stackoverflow-31225404/target/stackoverflow-31225404-1.0-SNAPSHOT.jar to /Users/stefanheimberg/.m2/repository/ch/stefanheimberg/stackoverflow/stackoverflow-31225404/1.0-SNAPSHOT/stackoverflow-31225404-1.0-SNAPSHOT.jar
Installing /Users/stefanheimberg/git/stackoverflow-31225404/pom.xml to /Users/stefanheimberg/.m2/repository/ch/stefanheimberg/stackoverflow/stackoverflow-31225404/1.0-SNAPSHOT/stackoverflow-31225404-1.0-SNAPSHOT.pom
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 1.888s
Finished at: Tue Jul 07 00:41:57 CEST 2015
Final Memory: 8M/155M
------------------------------------------------------------------------
ここでの秘訣は、最初にプラグイン(私のantrun内)をテストフェーズにバインドし、その後、「default-test」フェーズのバインドを解除することです。この後、maven-surfireをテストフェーズに再度バインドできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加