Gradle 依赖项:使用本地 jar 编译还是从 Maven 存储库编译?
Gradle dependencies: compile using local jar vs compile from maven repository?
假设我有 2 个项目:utils-project
、main-project
。
当我使用来自我的 Maven 存储库的 main-project
build.gradle
依赖项时,它工作正常:
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 编译我的主项目时,它有何不同以及如何实现相同的效果?
区别在于项目对象模型 (POM),它存在与否。 POM 文件 pom.xml
包含特定模块的依赖项,通常与项目工件一起部署到 Maven 存储库。
当您说 compile files()
时,Gradle 只能访问神器。由于缺少 POM,依赖信息不可用,构建很可能会失败。相反,当声明从适当的存储库解析的依赖项时,Gradle 在下载实际工件及其依赖项和传递依赖项之前获取 POM。
您可以通过
使用本地 jar 实现相同的效果
将所有依赖项和传递依赖项(等等)下载到本地文件夹并相应地引用它们
compile files('/path/to/jar/file/*.jar')
- 创建特定库的 uber/fat/shaded/shadow,以便它将所有依赖项包含在单个
jar
文件中。
假设我有 2 个项目:utils-project
、main-project
。
当我使用来自我的 Maven 存储库的 main-project
build.gradle
依赖项时,它工作正常:
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 编译我的主项目时,它有何不同以及如何实现相同的效果?
区别在于项目对象模型 (POM),它存在与否。 POM 文件 pom.xml
包含特定模块的依赖项,通常与项目工件一起部署到 Maven 存储库。
当您说 compile files()
时,Gradle 只能访问神器。由于缺少 POM,依赖信息不可用,构建很可能会失败。相反,当声明从适当的存储库解析的依赖项时,Gradle 在下载实际工件及其依赖项和传递依赖项之前获取 POM。
您可以通过
使用本地 jar 实现相同的效果将所有依赖项和传递依赖项(等等)下载到本地文件夹并相应地引用它们
compile files('/path/to/jar/file/*.jar')
- 创建特定库的 uber/fat/shaded/shadow,以便它将所有依赖项包含在单个
jar
文件中。