Gradle 构建不包括 source/src groovy

Gradle build not including source/src groovy

我正在尝试从基本程序创建一个 jar。

问题是当我 运行 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'
        }
    }