我有3个项目:
构建顺序是:1。ParentProj,2。ProjA,3。ProjB(无法更改!)
我想告诉maven执行位于ProjB中的TestSuite。
如果我使用此命令运行构建:mvn clean -e test -Dtest=AllServiceTests
,构建将失败,因为maven无法在ProjA中找到“AllServiceTests”类,它是在ProjB之前构建的。
这个问题有解决办法吗? (更改构建顺序不是解决方案)
答案 0 :(得分:9)
我刚刚找到解决方案:
clean install test -Dtest=myTestSuite -DfailIfNoTests=false
如果ProjA不包含Test类, -DfailIfNoTests=false
将强制maven继续构建。
这最终解决了我的问题。
答案 1 :(得分:3)
您是否查看了--also-make
和--projects
选项?
$ mvn --help
usage: mvn [options] [<goal(s)>] [<phase(s)>]
Options:
-am,--also-make If project list is specified, also
build projects required by the
list
-pl,--projects <arg> Comma-delimited list of specified
reactor projects to build instead
of all projects. A project can be
specified by [groupId]:artifactId
or by its relative path.
然后我想这可行:
mvn clean test -pl ProjB -am -Dtest=AllServiceTests
如果有效,请回复并告诉我们!我很好奇。 :)
答案 2 :(得分:0)
最简单的解决方案是切换到ProjB目录并在那里执行命令行。