【发布时间】:2012-05-05 15:57:13
【问题描述】:
我正在尝试使用 Maven 将我的测试类打包到一个带有依赖项的可执行 jar 中,但我很难做到这一点。
到目前为止,这是我的 pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.c0deattack</groupId>
<artifactId>executable-tests</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>executable-tests</name>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.21.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>cucumber-tests</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>cucumber.cli.Main</mainClass>
</transformer>
</transformers>
<artifactSet>
<includes>
<include>info.cukes:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.c0deattack</groupId>
<artifactId>executable-tests</artifactId>
<version>1.0</version>
<type>test-jar</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
当我执行mvn clean package 时,构建会创建 3 个 jar:
- executable-tests-1.0.jar //由mvn包阶段构建
- executable-tests-1.0-teststjar // 由 jar-plugin 构建
- cucumber-tests.jar // 由 shade-plugin 构建
Cucumber-tests.jar 包含 info.cuke 依赖项,但不包含 executable-tests-1.0-tests.jar。
我已经做了各种各样的事情来尝试包含测试类,但没有任何效果,我错过了什么?
编辑:我已经将我的示例项目推送到 GitHub,如果有人喜欢玩它:) https://github.com/C0deAttack/ExecutableTests
【问题讨论】:
-
您是否尝试过明确指定分类器:
<include>com.c0deattack:executable-tests:jar:tests</include>。 -
嗨,是的,我也试过了。甚至尝试使用对
的通配符支持,但这也不起作用。真难过! -
如果你先
mvn clean install然后mvn clean package有效吗?我想知道它是否期望测试 jar 在本地 repo 中?
标签: java maven dependencies maven-shade-plugin maven-jar-plugin