【问题标题】:In gradle how to use sources from relative path outside of project在gradle中如何使用来自项目外部相对路径的源
【发布时间】:2017-05-02 14:24:20
【问题描述】:

我有以下 2 个项目彼此相邻放置在某个文件夹中,我想将来自非 gradle 项目的特定源包含到该项目中,结构如下。

rootfolder/
  my-gradle-project/
    src/main/java
    build.gradle

  my-non-gradle-project/
    src/main/java/com/example/utils

在 build.gradle 为什么以下不起作用?我有什么选择?

此外,我需要包含来自非 gradle 项目的特定 java 源代码。

build.gradle

sourceSets.main.java.srcDirs = [
          'src/main/java', 
           '../my-non-gradle-project/src/main/java/com/example/util')]

【问题讨论】:

  • 发现它实际上工作正常,除了包都搞砸了。 com/example/util 中的源显示为默认包。所以这现在归结为问题的另一半——如何在不混乱的情况下包含特定的源。
  • 使用'../my-non-gradle-project/src/main/java' 作为您的第二条路径?
  • src/main/java 的问题是它将包括所有来源。我只想要特定的路径。这是一个我无法控制的奇怪项目,否则本可以做得更多。
  • 要获得正确的包,您必须使用src 路径。看起来 SourceDirectorySet 包含和排除过滤器docs.gradle.org/current/javadoc/org/gradle/api/file/…。过滤器可能适用于您的两条路径,您可以使用单独的源集来规避。
  • 单独的 sourceSets 似乎是一个最佳选择。

标签: java gradle gradle-eclipse


【解决方案1】:

以下在 intelliJ 中有效:

...
group 'org.example'
version '1.0-SNAPSHOT'

sourceSets {
    main {
        java{
            srcDirs '../my-non-gradle-project/src/main/java/com/example/util' /* include proto files from base project level */
        }
    }
}

sourceCompatibility = 1.11
...

【讨论】:

  • 是的,单独的 sourceSets 是关键。我可以,除非您可以详细说明有关场景的答案而不是原型
猜你喜欢
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多