如何配置maven shade插件以在我的jar中包含测试代码?
我使用shade maven插件来构建我的项目,以便它的所有依赖项都包含在一个jar中(这使得在Hadoop上运行它更容易)。 Shade似乎默认排除了我的测试代码,这是可以理解的。 由于我想对我的集群运行集成测试,我希望设置另一个配置文件来为此目的构建一个单独的jar。 有没有办法配置这个插件还包括测试代码?
使用版本2.2的maven-shade-plugin,他们添加了一个“shadeTestJar”选项(参见MSHADE-158): http ://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeTestJar
但是,我尝试使用它并且无法使其工作。 这是我的插件配置:
org.apache.maven.plugins maven-shade-plugin 2.2 package shade true
“…- tests.jar”文件没有条目,但主阴影jar看起来很好(尽管它不包含任何测试类)。
此外,这个问题重复了另一个问题,虽然接受的答案并不真正令人满意: 如何在maven-shade-plugin创建的Jar中包含测试类?
最后几个答案是最好的破解function的混乱解决方法。 问题的事实仍然是maven-shade-plugin
中存在一个错误。 与此同时,我调查并根本导致了这个bug,并创建了一个补丁 。 现在我希望Apache的某个人很快就会包含它,然后最终的shadeTestJar
function可以像它应该的那样工作。
我已经成功通过添加:
org.codehaus.mojo build-helper-maven-plugin 1.9.1 add-source generate-sources add-source ${project.basedir}/src/test/java/
尝试include
的测试包:
org.apache.maven.plugins maven-shade-plugin 1.2.2 package shade org.apache.maven:*
使用上面的~steve -k解释的maven-shade-plugin
是正确的,遗憾的是由于一个bug shadeTestJar
不起作用,结果测试JAR是空的。
- 不推荐使用MapReduceBase和Mapper
- DataNode无法在Hadoop中启动
- 如何在使用hadoop时使用logger api编写java日志文件
- Hadoop:java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.io.Text
- Hadoop中的setJarByClass()
- 如何在mapper(Hadoop)中使用MATLAB代码?
- ClassNotFoundException在修改后的SimpleShortestPathsVertex上运行GiraphRunner
- 如何强制Spark执行代码?
- 在Hadoop中使用NullWritable的优点