【问题标题】:Sharing class path configuration between multiple gradle subprojects在多个 gradle 子项目之间共享类路径配置
【发布时间】:2015-08-10 00:32:59
【问题描述】:

我有两个不同的 java 项目,projectA 和 projectB。我处于projectB依赖projectA的阶段。如何拉入通过构建 projectA 及其所有依赖项创建的 jar?

本质上,我想在eclipse中将projectA添加到projectB的构建路径中的效果进行镜像,有效地在classpath projectA上拉入jar。

【问题讨论】:

  • Gradle Multiproject 的可能重复项
  • 这是一个不同的问题。另一个用户正在询问如何获取路径

标签: java eclipse gradle build.gradle


【解决方案1】:
  1. 如果这两个项目密切相关,您可以让项目 A 和项目 B 成为同一个多项目构建的一部分,那么:

    //ProjectB build.gradle
    dependencies {
      compile project(':ProjectA')
    }
    
  2. 如果它们不是密切相关的,您可以 publish 将项目 A 的输出发送到存储库,例如您本地的 Maven,ArtificatoryBintray 等。然后在项目 B 中,您将像任何其他依赖项一样获得它。例如

    //ProjectB build.gradle
    repositories {
      mavenLocal()
      //Or something like this:
      //maven { url "http://urltoyourartifactory.com/repo/" }
    }
    
    dependencies {
      compile 'com.yourname:project-a:1.0.0'
    }
    

【讨论】:

  • 我是通过这样做获得 project-a jar 及其所有依赖项,还是只是获得 project-a jar?
  • 如果项目 A 设置正确,默认情况下会包含它的所有依赖项。要管理将哪些传递依赖项从项目 A 添加到项目 B,请查看 Dependency Management 章节
  • 我有这个设置,但是当我将文件存储在 core/src/main/resources/item.txt 中时,我的 Web 项目无法使用 Spring 的 ResourceLoader.getResource("classpath:item.txt"),反之亦然。如果文件存储在web/src/main/resoures/item.txt 中,那么我的核心项目就不能使用Spring 的ResourceLoader.getResource("classpath:item.txt") 命令。错误总是java.io.FileNotFoundException。我的网络build.gradle 就是compile project(':core')。有什么想法吗?
  • @anon 听起来您可能需要从类路径中读取内容作为 InputStream 而不是文件,请参阅stackoverflow.com/questions/14876836/…
  • @HeinrichFilter 感谢您的输入,但这并没有解决问题。通过 Spring 的ResourceLoaderClassLoader 导入文件作为文件或作为输入流的任何方法都无法解决此问题。我必须做的是在构建时为 build.gradle 文件中的“web”项目“导入”核心的项目资源文件夹。答案在这里:stackoverflow.com/a/43686346/584947
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2011-02-09
  • 2016-10-19
  • 2018-03-18
相关资源
最近更新 更多