Gradle依赖关系:使用本地jar进行编译还是通过Maven存储库进行编译?

真崎

假设我有2个项目:utils-projectmain-project当我main-project build.gradle从我的Maven存储库中使用依赖项时,它工作正常

dependencies {
    compile 'my.group:utils-project:some-version'
}

当我从maven下载jar并向其中添加jar文件时build.gradle,由于缺少utils-project传递依赖项而失败

dependencies {
    compile files('/path/to/jar/file/utils-project.some-version.jar')
}

使用本地jar编译主项目时,它有何不同?如何达到相同的效果?

oku

区别在于项目对象模型(POM),它的存在与否。POM文件pom.xml包含特定模块的依赖关系,通常与项目工件一起部署到Maven存储库。

当您说时compile files(),Gradle只能访问该工件。由于缺少POM,因此不存在依赖项信息,并且构建可能会失败。相反,当声明从适当的存储库中解析出依赖关系时,Gradle在下载实际工件及其依赖关系和可传递依赖关系之前会获取POM。

您可以通过以下方式使用本地罐子获得相同的效果

  • 将所有依赖项和传递性依赖项(等等)下载到本地文件夹并相应地引用它们

    compile files('/path/to/jar/file/*.jar')
    
  • 使用平面目录存储库

  • 创建特定库的uber / fat / shaded / shadow,以便将所有依赖项包含在单个jar文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Roslyn进行编译时自动解决依赖关系

使用 Maven for Hadoop on Azure 对编译/.jar 创建进行故障排除

使用gradle将jar上传到本地Maven存储库

Gradle实现与在jar任务中进行编译

在导入本地项目的依赖关系不能与Maven编译

本地Nexus存储库通过POM依赖关系提取除主jar之外的所有内容

Java-如何在不通过Gradle项目进行编译的情况下使用依赖项

Gradle在编译任务中使用具有依赖关系的jar

使用gradle,如何从本地jar表达仅编译时依赖项?

使用Maven存储库进行Gradle离线构建

使用jar文件进行CMD编译

使用GNAT使用静态库进行编译

Kotlin:使用Gradle进行增量编译

Gradle无法使用Java 1.8进行编译

Gradle无法使用lib进行编译

使用Maven本地存储库的Gradle配置

使用外部库(OASIS,OCalflfind)进行编译

使用openssl库进行交叉编译

Scala依赖注入可通过单独的配置进行编译

使用Maven编译范围时jar中缺少依赖类

不同的buildConfigFields的Dynamic Gradle编译依赖关系

如何在Gradle中使用本地Maven存储库中的jar

使用CodeDom进行编译

使用“ GPR”依赖项进行编译时出错

如何根据构建变体使用 gradle 编译不同的依赖模块的依赖关系?

通过maven编译的github项目之间的依赖

使用外部jar文件进行编译和运行

使Javac从非Java依赖项进行编译

创建Java库-添加Gradle依赖项进行测试,但不要将其包含在已编译的库中(或使其可重写)