Gradle 生成的 Jar 不包含 gwt.xml 文件?
Gradle generated Jar does not include gwt.xml file?
我创建了一个小型图书馆项目 build.gradle:
apply plugin: 'java'
apply plugin: 'gwt-base'
apply plugin: 'eclipse'
buildscript {
repositories {
mavenCentral()
jcenter()
maven {
url new File(rootProject.projectDir.parentFile, 'repo').toURI()
// url "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
}
}
gwt {
gwtVersion='2.7.0'
}
文件夹结构如下所示:
/library
/library/Library.gwt.xml
/library/client/HelloWorldWidget.java
来源取自here。
当我执行 gradle build
gradle 时生成一个不包含源代码且也不包含 gwt.xml 模块文件的 jar 文件。
如何强制 gradle 在生成的 jar 中包含源和 gwt.xml 文件?
这是包含 *.java
文件的解决方案:
jar {
from('src/main/java') {
include '**/*.java'
}
}
包括任何其他资源,如 gwt.xml
文件,将它们放入:
/src/main/resources
或者您可以使用:
jar {
from project.sourceSets.main.allSource
from project.sourceSets.main.output
}
当使用 Java 插件时,Gradle 假设项目有 standard structure,即 'src\main\java' & 'src\test\java'。因此,在执行构建任务时,它根本找不到任何这些目录。
解决此问题的最佳方法是通过修改现有源集来定义项目结构,这些源集定义了源所在的位置:
sourceSets {
main {
java {
include '/library/**'
}
}
test {
java {
include '/test/sources/directory/**'
}
}
}
我创建了一个小型图书馆项目 build.gradle:
apply plugin: 'java'
apply plugin: 'gwt-base'
apply plugin: 'eclipse'
buildscript {
repositories {
mavenCentral()
jcenter()
maven {
url new File(rootProject.projectDir.parentFile, 'repo').toURI()
// url "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
}
}
gwt {
gwtVersion='2.7.0'
}
文件夹结构如下所示:
/library
/library/Library.gwt.xml
/library/client/HelloWorldWidget.java
来源取自here。
当我执行 gradle build
gradle 时生成一个不包含源代码且也不包含 gwt.xml 模块文件的 jar 文件。
如何强制 gradle 在生成的 jar 中包含源和 gwt.xml 文件?
这是包含 *.java
文件的解决方案:
jar {
from('src/main/java') {
include '**/*.java'
}
}
包括任何其他资源,如 gwt.xml
文件,将它们放入:
/src/main/resources
或者您可以使用:
jar {
from project.sourceSets.main.allSource
from project.sourceSets.main.output
}
当使用 Java 插件时,Gradle 假设项目有 standard structure,即 'src\main\java' & 'src\test\java'。因此,在执行构建任务时,它根本找不到任何这些目录。
解决此问题的最佳方法是通过修改现有源集来定义项目结构,这些源集定义了源所在的位置:
sourceSets {
main {
java {
include '/library/**'
}
}
test {
java {
include '/test/sources/directory/**'
}
}
}