我将build-helper-maven-plugin用于具有非标准树文件夹的旧项目。
我这样使用它:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/firstmodule/src</source>
<source>${basedir}/secondmodule/src</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/firstmodule/tests</source>
<source>${basedir}/secondmodule/tests</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
如果我在项目的根目录上启动mvn install,测试通过,它可以正常工作。
但是,这个项目是一个更大项目的子模块。 如果我在父项目的根文件夹中启动mvn install,则maven不会执行测试。
它似乎有效但是肯定没有检测到任何测试:
[INFO] Building MyLegacyProject
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\target
[INFO] [build-helper:add-source {execution: add-source}]
[INFO] Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\firstmodule\src added.
[INFO] Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\secondmodule\src added.
[INFO] [build-helper:add-test-source {execution: add-test-source}]
[INFO] Test Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\firstmodule\tests added.
[INFO] Test Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\secondmodule\tests added.
[debug] execute contextualize
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 40 resources
[INFO] Copying 40 resources
[WARNING] While downloading com.sun.xml:saaj-impl:1.3
This artifact has been relocated to com.sun.xml.messaging.saaj:saaj-impl:1.3.
[WARNING] While downloading javax.xml:jaxb-api:2.1
This artifact has been relocated to javax.xml.bind:jaxb-api:2.1.
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 752 source files to C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\target\classes
[debug] execute contextualize
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] Copying 34 resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 15 source files to C:\DEV\perforce\1992\depot\MyLegacyProject\release\BUG_FIXING\MyLegacyProject\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\DEV\perforce\1992\depot\MyLegacyProject\release\BUG_FIXING\MyLegacyProject\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.381 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
任何想法如何使这项工作?
答案 0 :(得分:0)
尝试使用调试模式(-X)启动maven,以查看surefire使用的属性是否适用于您的树文件夹。
答案 1 :(得分:0)
您使用的是Maven 3吗? $ {basedir}仅由maven 3识别(并且被maven 2默默忽略:() 你如何理解基础用法?它是构建开始的POM的目录路径。因此,它将是父项目目录的路径或其中一个模块,具体取决于您从哪里启动构建。在第二种情况下,路径将是错误的。我想您希望始终拥有项目根目录的路径?
答案 2 :(得分:0)
好的我找到了!!!
有人遇到同样的问题: https://stackoverflow.com/a/6925096/242658
然而,很难想象它。
它与build-helper-maven-plugin无关,我不知道为什么我在单模块模式下没有这个问题。
我使用了TestNG中的powermock和powermock。并且使用testng我的测试不会被万无一失地检测到。所以我不得不排除testng:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-mockito-release-full</artifactId>
<version>1.4.9</version>
<classifier>full</classifier>
<exclusions>
<exclusion>
<artifactId>powermock-module-testng</artifactId>
<groupId>org.powermock</groupId>
</exclusion>
</exclusions>
</dependency>