英文:
Gradle Builds an Empty Jar File
问题
我使用 gradle init
将项目从 Maven 转换为 Gradle,并在更新依赖后进行了操作。gradle test
如预期般工作。然而,当我运行 gradle build
时,生成的 JAR 文件完全为空。
我尝试调整源设置以使其生效,但似乎并未解决问题。据我所知,目录结构与 Gradle 期望的相匹配,一切都嵌套在 src/main/groovy
中。
该项目的完整代码可在Github上找到。
通常是什么原因导致构建中没有添加任何文件?除了 gradle init
创建的内容之外,是否还需要添加其他配置?
Gradle 构建文件:
plugins {
id 'java'
id 'maven-publish'
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
implementation 'org.codehaus.groovy:groovy-all:3.0.5'
implementation 'com.github.javafaker:javafaker:1.0.2'
testImplementation 'org.spockframework:spock-core:2.0-M3-groovy-3.0'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
}
group = 'nl.topicus.overheid'
version = '0.2.0'
description = 'java-factory-bot'
sourceCompatibility = '1.8'
publishing {
publications {
maven(MavenPublication) {
from(components.java)
}
}
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
英文:
I converted a project to gradle using gradle init
from maven after updating the dependencies. gradle test
works as expected. However, when I run gradle build
, the jar file that's generated is entirely empty.
I've attempted to tweak the source set to make something happen, but that doesn't seem to solve the problem. The directory structure matches what gradle expects from what I can tell everything is nested in src/main/groovy
The project's full code is available on Github.
In general what causes no files to be added to a build? Is there additional configuration I need to add besides whatever gradle init
creates?
Gradle build file:
plugins {
id 'java'
id 'maven-publish'
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
implementation 'org.codehaus.groovy:groovy-all:3.0.5'
implementation 'com.github.javafaker:javafaker:1.0.2'
testImplementation 'org.spockframework:spock-core:2.0-M3-groovy-3.0'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
}
group = 'nl.topicus.overheid'
version = '0.2.0'
description = 'java-factory-bot'
sourceCompatibility = '1.8'
publishing {
publications {
maven(MavenPublication) {
from(components.java)
}
}
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
答案1
得分: 1
现在的情况是,该项目正在尝试构建为Java项目,并从src/main/java获取源代码,因为这是Java项目的默认设置。因此,在plugins
部分中,您需要使用id 'groovy'
而不是id 'java'
,以便它可以查找src/main/groovy,并在其中构建.java
和.groovy
文件。
英文:
What going on now is the project is try to build as Java project and get src from src/main/java as it is default from Java project. So, you need id 'groovy'
not id 'java'
in plugins
section to make it look into src/main/groovy and build both .java and .groovy files in there.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论