我想用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)
   }
}

最佳答案

您的源集定义不正确。 Java插件仅支持源集中的javaresources源类型。每个源集可以有一个任意名称。如果您将源集命名为main,它将定制jar任务约定使用的源集。所以:

apply plugin: 'java'

sourceSets {
  main {
    java {
      srcDir 'src'
      exclude '**/*Tests.java'
    }
  }

  test {
    java {
      srcDir 'src'
      include '**/*Tests.java'
    }
  }
}

关于java - 如何使用gradle java-plugin将一些Java文件构建到一个jar中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44310572/

10-11 22:20
查看更多