Gradle 构建不包括 source/src groovy
Gradle build not including source/src groovy
我正在尝试从基本程序创建一个 jar。
- 我有一个基本的 groovy 项目,即 src/org...../*.groovy 在根目录中
我有以下build.gradle
apply plugin: 'groovy'
version = '1.0'
repositories {
mavenCentral();
}
dependencies
{
compile files (fileTree(dir: 'lib', include: ['*.jar']),
fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
}
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output.classesDir)
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Implementation-Title': 'Lab Services',
'Implementation-Version': version,
'Main-Class': 'org.xxx.clarity.ClarityServices'
}
}
问题是当我 运行 and/or 检查 jar 文件时,我的来自 src/** 的类不包括在内! (所有的依赖都是完美的)
这里有什么问题?
更新
当我添加:
来自文件(文件树(目录:'src'))
它包含 .groovy 文件的任务:(
当我添加
from sourceSets.main.output.classesDir
任务和:
sourceSets {
main {
groovy {
srcDir 'src'
}
}
}
他们没有被包括在内:(找不到任何其他方式....
默认情况下,Gradle 在应用 'groovy' 插件时在 src/main/groovy
中查找源代码。您需要重组您的项目或配置您的 source sets 以适当地反映您的项目结构。
在你的 jar 任务中引用 sourceSets.main.output.classesDir
意味着它只会从你的 jar 目录中复制所有内容。问题是,当您 运行 gradle buildLabServicesJar
时,没有任何信息告诉 gradle 应该首先编译 类。这就是目录保持为空并且您的 jar 不包含已编译的 类 的原因。如果您从
修改您的任务声明
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output.classesDir)
...
}
到
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output)
...
}
任务自动装配开始。任务自动装配意味着如果您将一个任务的输出声明为另一个任务的输入(您的 buildLabServicesJar)gradle 知道它必须首先生成输出(运行例如编译任务)。
希望对您有所帮助!
你必须原谅我,但我最近刚从微软的长寿中走出来,还在学习中。我对缺乏基本内容的博客和示例代码感到惊讶,我所做的是如此标准....(我将发布一个 once/if 我弄清楚了)
注意:Intellij -> Build -> Build Artifacts 完美运行,但我想将其移至 Bamboo。
总之考虑到大家的想法,这是我的文件(和错误)
apply plugin: 'groovy'
version = '1.0'
repositories {
mavenCentral();
}
dependencies
{
compile files (fileTree(dir: 'lib', include: ['*.jar']),
fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
}
//println "Classes dir: " + sourceSets.main.groovy
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output)
//from sourceSets.main.groovy.output
//from files(fileTree(dir: 'src'))
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Implementation-Title': 'Lab Services',
'Implementation-Version': version,
'Main-Class': 'org.petermac.clarity.ClarityServices'
}
}
sourceSets {
main {
groovy.srcDirs = [ 'src' ]
}
}
错误:无法推断 Groovy class 路径,因为在 class 路径上找不到 Groovy Jar:配置 ':compile'
如果我将 src 行更改为:
srcDirs = [ 'src/**' ]
它构建但再次遗漏了我的所有来源。
最终工作build.gradle。 (谢谢大家)。
apply plugin: 'application'
apply plugin: 'groovy'
version = '1.0'
repositories {
mavenCentral();
}
dependencies
{
compile files (fileTree(dir: 'lib', include: ['*.jar']),
fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
compile 'org.codehaus.groovy:groovy-all:2.3.6' //Was missing
}
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output) //Was missing/wrong
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
with jar
sourceSets.main.groovy {
srcDirs = [ 'src' ] //Was missing/wrong
}
manifest {
attributes 'Implementation-Title': 'Lab Services',
'Implementation-Version': version,
'Main-Class': 'org.petermac.clarity.ClarityServices'
}
}
我正在尝试从基本程序创建一个 jar。
- 我有一个基本的 groovy 项目,即 src/org...../*.groovy 在根目录中
我有以下build.gradle
apply plugin: 'groovy' version = '1.0' repositories { mavenCentral(); } dependencies { compile files (fileTree(dir: 'lib', include: ['*.jar']), fileTree(dir: 'lib/DocxDep', include: ['*.jar'])) } task buildLabServicesJar(type: Jar) { from files(sourceSets.main.output.classesDir) from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } } manifest { attributes 'Implementation-Title': 'Lab Services', 'Implementation-Version': version, 'Main-Class': 'org.xxx.clarity.ClarityServices' } }
问题是当我 运行 and/or 检查 jar 文件时,我的来自 src/** 的类不包括在内! (所有的依赖都是完美的)
这里有什么问题?
更新
当我添加: 来自文件(文件树(目录:'src')) 它包含 .groovy 文件的任务:(
当我添加
from sourceSets.main.output.classesDir
任务和:
sourceSets {
main {
groovy {
srcDir 'src'
}
}
}
他们没有被包括在内:(找不到任何其他方式....
默认情况下,Gradle 在应用 'groovy' 插件时在 src/main/groovy
中查找源代码。您需要重组您的项目或配置您的 source sets 以适当地反映您的项目结构。
在你的 jar 任务中引用 sourceSets.main.output.classesDir
意味着它只会从你的 jar 目录中复制所有内容。问题是,当您 运行 gradle buildLabServicesJar
时,没有任何信息告诉 gradle 应该首先编译 类。这就是目录保持为空并且您的 jar 不包含已编译的 类 的原因。如果您从
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output.classesDir)
...
}
到
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output)
...
}
任务自动装配开始。任务自动装配意味着如果您将一个任务的输出声明为另一个任务的输入(您的 buildLabServicesJar)gradle 知道它必须首先生成输出(运行例如编译任务)。
希望对您有所帮助!
你必须原谅我,但我最近刚从微软的长寿中走出来,还在学习中。我对缺乏基本内容的博客和示例代码感到惊讶,我所做的是如此标准....(我将发布一个 once/if 我弄清楚了)
注意:Intellij -> Build -> Build Artifacts 完美运行,但我想将其移至 Bamboo。
总之考虑到大家的想法,这是我的文件(和错误)
apply plugin: 'groovy'
version = '1.0'
repositories {
mavenCentral();
}
dependencies
{
compile files (fileTree(dir: 'lib', include: ['*.jar']),
fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
}
//println "Classes dir: " + sourceSets.main.groovy
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output)
//from sourceSets.main.groovy.output
//from files(fileTree(dir: 'src'))
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Implementation-Title': 'Lab Services',
'Implementation-Version': version,
'Main-Class': 'org.petermac.clarity.ClarityServices'
}
}
sourceSets {
main {
groovy.srcDirs = [ 'src' ]
}
}
错误:无法推断 Groovy class 路径,因为在 class 路径上找不到 Groovy Jar:配置 ':compile'
如果我将 src 行更改为: srcDirs = [ 'src/**' ] 它构建但再次遗漏了我的所有来源。
最终工作build.gradle。 (谢谢大家)。
apply plugin: 'application'
apply plugin: 'groovy'
version = '1.0'
repositories {
mavenCentral();
}
dependencies
{
compile files (fileTree(dir: 'lib', include: ['*.jar']),
fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
compile 'org.codehaus.groovy:groovy-all:2.3.6' //Was missing
}
task buildLabServicesJar(type: Jar) {
from files(sourceSets.main.output) //Was missing/wrong
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
with jar
sourceSets.main.groovy {
srcDirs = [ 'src' ] //Was missing/wrong
}
manifest {
attributes 'Implementation-Title': 'Lab Services',
'Implementation-Version': version,
'Main-Class': 'org.petermac.clarity.ClarityServices'
}
}