来自src / test的Jar文件中的主类

时间:2016-01-20 17:47:58

标签: java gradle testng

我需要分发一个集成测试,它存在于src / test下。所以我使用gradle来构建一个指向这个类的jar。

我在网上闲逛时想到了这一点:

task fatJar(type: Jar) {
  zip64 = true
  manifest {
    attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': 1.3,
            'Main-Class': 'org.example.AnIntegrationTest'
  }
  from sourceSets.test.output
}

当我尝试运行时,我得到了:

Error: Could not find or load main class org.example.AnIntegrationTest

主要方法是在那里,并且' jar tf'确实向我展示了包装中的课程。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您的jar文件缺少测试运行时依赖项。一种可能的解决方案是将所有必需的依赖项打包到jar中。请注意,这会增加可分发jar的大小。

在jar任务中添加一个from子句:

task fatJar(type: Jar) {
  zip64 = true
  manifest {
    attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': 1.3,
            'Main-Class': 'org.example.AnIntegrationTest'
  }
  from sourceSets.test.output

  //collect all dependencies
  from { configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) } }
  with jar
}