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 buildgradle 时生成一个不包含源代码且也不包含 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/**'
        }
    }
}