如何使用 gradle java-plugin 将一些 java 文件构建到一个 jar 中?
How to build some java files to one jar using gradle java-plugin?
我想用 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
之后我收到了错误信息:Could not find the main method
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
这取决于其他任务,例如 test
、compile
等。要使用它,您需要 apply plugin: '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 插件仅支持源集中的 java
和 resources
源类型。每个源集都可以有一个任意名称。如果您将源集命名为 main
,它将自定义 jar 任务约定使用的源集。所以:
apply plugin: 'java'
sourceSets {
main {
java {
srcDir 'src'
exclude '**/*Tests.java'
}
}
test {
java {
srcDir 'src'
include '**/*Tests.java'
}
}
}
我想用 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
之后我收到了错误信息:Could not find the main method
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
这取决于其他任务,例如test
、compile
等。要使用它,您需要apply plugin: '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 插件仅支持源集中的 java
和 resources
源类型。每个源集都可以有一个任意名称。如果您将源集命名为 main
,它将自定义 jar 任务约定使用的源集。所以:
apply plugin: 'java'
sourceSets {
main {
java {
srcDir 'src'
exclude '**/*Tests.java'
}
}
test {
java {
srcDir 'src'
include '**/*Tests.java'
}
}
}