java - 如何使用 gradle java-plugin 将一些 java 文件构建到一个 jar 中?

标签 java gradle source-sets

我想用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 任务,它取决于 assemblecheck取决于其他任务,如测试编译等。要使用它,您需要应用插件:'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/

相关文章:

android - 理想的 Gradle 配置为每个源集创建单独的模块做什么?他会改变他的依赖关系吗?

java - Kafka Streams 应用程序无休止的再平衡

docker - golang、docker、gradle的项目结构

android - "already added"ormlite 和 gradle 异常

java - 在gradle中创建一个shadow jar?

android - 有没有办法为gradle中的每个buildType设置不同的 “androidTest.java.srcDirs”?

Java android java.util.ConcurrentModificationException

java - 文本框中的文本暂时灰显

java - 将对象存储在 arraylist 中并返回这些对象

Android gradle buildTypes : Duplicate class