【问题标题】:Gradle: using resources in a dependency jar as a sourcesetGradle:使用依赖 jar 中的资源作为源集
【发布时间】:2019-02-04 11:26:54
【问题描述】:

假设我有一个build.gradle

dependencies {
    compile 'com.group:some-app:1.0.1'
    compile 'com.group:some-app:1.0.1:sources'
}

sourceSets {
    main {
        other {
             srcDir 'src/main/other'
        }
    }
}

所以some-app-1.0.1-sources.jar 中有源文件 - 不是 Java 文件,而是可以从中生成 Java 的文件。

如何在sourceSets 中包含这些文件?

【问题讨论】:

    标签: gradle dependencies source-sets


    【解决方案1】:

    您可以即时将源 jar 中的文件提取到一个目录中,并将该目录添加到源集中。

    configurations {
       sourceJar
    }
    
    dependencies {
        compile 'com.group:some-app:1.0.1'
        sourceJar 'com.group:some-app:1.0.1:sources'
    }
    
    def generatedDir = "$build/other"
    task extractFiles(type: Copy) {
    
        from (zipTree(configurations.sourceJar.singleFile)) 
    
        into generatedDir 
    }
    
    sourceSets {
        main {
            resources {
                 srcDir generatedDir
            }
        }
    }
    

    【讨论】:

    • 我遇到了 2 个错误。可能我只是做错了什么? 1)InvalidUserDataException: Cannot change strategy of configuration ':sourceJar' after it has been resolved. 2)Expected configuration ':sourceJar' to contain exactly one file, however, it contains 18 files.
    • 源 jar 可能有传递依赖。尝试添加“transitive=false”。依赖项 { sourceJar ('com.group:some-app:1.0.1:sources') { transitive=false }}
    • transitive=false 尚未修复。我可以在from(zipTree(...)) 行中包含你所有的代码除了。这似乎是打破它的原因。但这是否引用了配置中较早的内容?
    • $build不存在,应该是$buildDir
    • 你能显示 com.group:some-app:1.0.1:sources 的依赖关系吗?
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 2016-06-20
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2011-07-14
    • 2020-11-11
    相关资源
    最近更新 更多