我想用gradle将一些java文件编译成一个jar文件。
目标是将它们添加到 jar 中并检查测试的依赖关系。
Maven 应该集成 junit 库。
我还想应用某种过滤器来仅测试带有 *Tests.java
的文件
build.gradle
文件与 src
文件夹位于同一目录中。
我的文件结构(文件夹或文件名无法更改):
src/eu/conflicts/Conflicts.java
src/eu/conflicts/ConflictsTests.java
src/eu/utils/BuggyUtils.java
src/eu/utils/BuggyUtilsTests.java
运行gradle -b build.gradle jar
后,我收到错误消息:无法找到主要方法
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.12'
}
sourceSets {
main {
conflicts {
srcDir = 'src/eu/conflicts'
}
utils {
srcDir = 'src/eu/utils'
}
}
test {
conflicts {
srcDir = 'src/eu/conflicts'
}
utils {
srcDir = 'src/eu/utils'
}
}
}
jar {
baseName = 'xy'
version = '0.1'
manifest {
attributes("Implementation-Title": "xy",
"Implementation-Version": 0.1)
}
}
最佳答案
您的源集似乎不正确,如果您不关心正在构建的工件,则实际上不需要修改 jar 任务。
要运行所有测试并编译文件,您只需要运行
<build
任务,它取决于assemble
和check
取决于其他任务,如测试
、编译
等。要使用它,您需要应用插件:'java'
。Gradle 将构建一个单个工件(如果您使用构建任务)来编译您想要的所有内容,默认情况下将主要源代码打包到一个没有测试源的 jar 中。
Gradle 将运行通过注释发现的测试源中的所有测试(使用构建任务中捆绑的测试任务)。
您可以在脚本中使用 SourceSets{} 修改所有内容以指向非默认结构
试试这个:
sourceSets {
main.java{
srcDirs = ['src/eu/conflicts', 'src/eu/utils']
include '**/*.java'
}
test.java{
srcDirs = ['src/eu/conflicts', 'src/eu/utils']
include '**/*Tests.java'
}
}
关于java - 如何使用 gradle java-plugin 将一些 java 文件构建到一个 jar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44310572/