Gradle 来自源的非托管依赖

Gradle non-managed dependency from source

我需要在 gradle 中配置对另一个项目 (P1) 的 source 的依赖。不幸的是,无法获得上述项目的 jar,也无法将其配置为使用 gradle(公司限制)。

现在,我正在编写一个依赖于 P1 的新 java 项目 (Pnew)。这两个项目目前都在开发中(甚至我的工作可能包括 P1 中的更改)。

通过配置额外的 sourceSet

sourceSets {
  main {
    java {
      srcDir '../../P1/src'
    }
  }
}

我设法摆脱了我依赖 P1 的编译错误。但这没有帮助。 P1的类自然全部变成了Pnew的一部分,这当然不是本意。

我的目标是:

dependencies {
  compile fileTree(dir: '../../P1/src/', include:'*.java')
}

但这似乎不起作用。

如何配置这样的依赖?

您可以尝试以下方法:

在您拥有 Pnewbuild.gradle 的同一目录中包含一个名为 settings.gradle 的文件。在此文件中放入以下内容:

include 'P1'
project(':P1').projectDir = = new File(rootDir, '../path/P1/')

其中 pathP1 build.gradle 文件的相对路径。

现在在你Pnew build.gradle添加以下内容:

dependencies {
      ...
      compile project(':P1')
      ...
}

有了这个,您可以使用 P1 作为依赖项来编译您的 Pnew 项目。

** 编辑 **

如果该项目不是 gradle 项目并且您不能从您的项目生成 jar,那么试试这个:

dependencies {
    compile files("relative/path/to/classes/dir")
}