原因:我们的项目使用Ant作为命令行界面。在使用maven的程序集插件进行新的程序集之后,我想进行初始测试以查看是否所有程序都已正确组装。因此,我需要在最终装配中包含单元测试。组装后,初始测试将被称为
> ant initTest
的build.xml:
<target="initTest">
<junit>
<test class="MyTest" />
</junit>
</target>
问题是: 我想在src / test / java中保持我的单元测试,而不将它们移动到src / main / java。 有没有办法告诉程序集插件包含我的单元测试?汇编描述符中的一个简单的 include 不会这样做......
答案 0 :(得分:10)
有两个步骤:
要打包测试,您需要加载jar:test-jar目标。 e.g。
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>test-jar</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后在装配模块中,您可以依赖于生成的工件。
<dependencies>
<dependency>
<groupid>${project.groupId}</groupId>
<artifactId>some-artifact</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
</dependency>
</dependencies>
关键位是“分类器”。
答案 1 :(得分:2)
@ Dominic-Mitchell的回答根本不适合我。最终工作的是为测试类添加fileSet
到我的程序集xml。 请注意,fileSet目录是不同的!这让我困扰了最长时间。
将${project.build.directory}
用于测试类,将${project.build.outputDirectory}
用于main:
<?xml version='1.0' encoding='UTF-8'?>
<assembly>
<id>toolbar-test</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/test-classes</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<scope>runtime</scope>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>**/LICENSE*</exclude>
<exclude>**/README*</exclude>
</excludes>
</unpackOptions>
</dependencySet>
<dependencySet>
<scope>test</scope>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
信用到期的信用 - 我在此博客文章中找到了此解决方案:http://alexgaddie.blogspot.com/2010/02/creating-uber-jar-with-maven.html
我不需要博文的profile
部分。
答案 2 :(得分:1)
以下为我们工作。
pom.xml
摘录:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
assembly.xml
摘录:
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
密钥是useProjectAttachments
代码。