Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在我的Eclipse工作区中解析从一个gradle项目到另一个gradle项目的依赖关系?_Java_Eclipse_Gradle - Fatal编程技术网

Java 如何在我的Eclipse工作区中解析从一个gradle项目到另一个gradle项目的依赖关系?

Java 如何在我的Eclipse工作区中解析从一个gradle项目到另一个gradle项目的依赖关系?,java,eclipse,gradle,Java,Eclipse,Gradle,我的eclipse工作区中有两个gradle项目。让我们叫他们“A”和“B”。其中“A”取决于“B”。项目“A”在其build.gradle文件中声明了对“B”的依赖关系,如下所示: dependencies { compile 'some-group:B:1.0.0' ... } root |-> project A \-> project B 由于我将在这两个项目中进行修改,如果gradle能够解决“B”对eclipse项目中二进制文件的依赖

我的eclipse工作区中有两个gradle项目。让我们叫他们“A”和“B”。其中“A”取决于“B”。项目“A”在其build.gradle文件中声明了对“B”的依赖关系,如下所示:

 dependencies {
    compile 'some-group:B:1.0.0'
    ...
}
root
    |-> project A
    \-> project B
由于我将在这两个项目中进行修改,如果gradle能够解决“B”对eclipse项目中二进制文件的依赖性(而不是从某个存储库下载B.jar),那就太好了

幸运的是,我发现Eclipse/STS中有这样的特性(根据问题)。我通过选中“将JAR重新映射到Gradle项目”(在Eclipse:Window->Gradle首选项中)来启用此功能。在完成Gradle->Refresh All(在项目“a”中)之后,我在项目“a”中有一个类路径:

  • C:\eclipseworkspace\B\bin
    (项目“B”的二进制文件所在的路径)
  • 项目B的所有可传递依赖项
  • 项目“A”中声明的所有依赖项(及其可传递依赖项)
到目前为止还不错:)

但是过了一段时间,我意识到我在类路径中得到的比我预期的多一点。 我在项目“A”类路径中也得到了这一点:

  • “B/src/test/java”的二进制文件
  • 项目“B”的“testCompile”依赖项
从项目“A”访问项目“B”的“测试”代码和testCimpile依赖项是没有意义的。有什么我可以避免的吗

我曾尝试在项目“B”中为
src/main/*
src/test/*
设置不同的输出文件夹,但随后这两个文件夹都被添加到项目“A”的类路径中


我以前在Eclipse中使用过Maven,在同一个Eclipse工作区中引用依赖关系非常有效。

多项目构建是您的答案

最简单的方法是使用如下目录结构:

 dependencies {
    compile 'some-group:B:1.0.0'
    ...
}
root
    |-> project A
    \-> project B
在根目录中,您将有一个build.gradle文件和一个settings.gradle文件,在settings.gradle中,您将列出项目a和项目B。任何通用配置都可以进入根目录build.gradle,然后在项目B依赖项中,您可以拥有以下内容:

dependencies {
    compile project(':project A')
}
然后,如果您更改项目A并构建项目B,项目A将重新编译,否则gradle将使用以前编译的版本


请参见

问题的一部分与可传递依赖项有关吗?你试过禁用它们吗?configurations.all{transitive=false},或者可以在单个依赖项上设置transitive=false。