在gradle中如何使用来自项目外部相对路径的源
Posted
技术标签:
【中文标题】在gradle中如何使用来自项目外部相对路径的源【英文标题】:In gradle how to use sources from relative path outside of project 【发布时间】: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 似乎是一个最佳选择。
【参考方案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 是关键。我可以,除非您可以详细说明有关场景的答案而不是原型以上是关于在gradle中如何使用来自项目外部相对路径的源的主要内容,如果未能解决你的问题,请参考以下文章
数据库项目 - “无法解析对来自名为 x 的源的外部元素的引用
如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?