使用 Gradle 从文件系统解析 jar
Using Gradle to resolve jars from the file system
我已经 "sneaker-netted" 了一组 jar,我最终会发布到一个 Gradle 友好的 repo (Artifactory),但是暂时必须保留在我的机器上.
我需要在 Gradle 项目中使用这些 jar,该项目不仅需要能够将它们列为 dependencies
,而且还使用 Eclipse 插件来解析我的 Eclipse 中的依赖关系 IDE.
这些 jar 都有 POM 并且有自己的传递依赖项(所有这些都在典型的 repos 中,如 Maven Central 和 JCenter 等)。
我正在寻找一种方法来将这些 jar 保存在我的文件系统中的某个位置,然后像正常一样解析它们 dependencies
,包括解析它们的传递依赖性,并使其与 however 兼容Gradle Eclipse 插件在后台工作。
同样,期望的结果是:
- 将这些 jar 添加为来自
~/special-jars/*
的依赖项
- 无论在每个 "special jar's" POM 中定义了什么依赖项,解决那些
- 当我 运行
gradle eclipse
时,Gradle 也从文件系统中提取它们
这可以吗?如果是,怎么做?
听起来您想将 jar 存储在本地 maven 存储库中。
默认情况下,本地 Maven Repo 位于此处 ~/.m2/repository
对于本地 Maven 存储库,目录结构将是严格的,例如这里是我本地的 gson
$ ls -d $PWD/*
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom.sha1
使用它,我可以使用典型的 gradle 依赖关系和传递依赖关系。
repositories {
mavenLocal()
}
dependencies {
compile "com.google.code.gson:gson:2.6.2"
}
您可以通过 flatdir
导入 jars,但是您将丢失 pom 中声明的传递依赖项。
除了 ,您还可以使用自定义位置。例如,您可以使用项目子文件夹
repositories {
maven {
url file("${rootProject.projectDir}/mavenRepo")
}
}
或者
repositories {
maven {
url file("c:/path/to/repo")
}
}
我已经 "sneaker-netted" 了一组 jar,我最终会发布到一个 Gradle 友好的 repo (Artifactory),但是暂时必须保留在我的机器上.
我需要在 Gradle 项目中使用这些 jar,该项目不仅需要能够将它们列为 dependencies
,而且还使用 Eclipse 插件来解析我的 Eclipse 中的依赖关系 IDE.
这些 jar 都有 POM 并且有自己的传递依赖项(所有这些都在典型的 repos 中,如 Maven Central 和 JCenter 等)。
我正在寻找一种方法来将这些 jar 保存在我的文件系统中的某个位置,然后像正常一样解析它们 dependencies
,包括解析它们的传递依赖性,并使其与 however 兼容Gradle Eclipse 插件在后台工作。
同样,期望的结果是:
- 将这些 jar 添加为来自
~/special-jars/*
的依赖项
- 无论在每个 "special jar's" POM 中定义了什么依赖项,解决那些
- 当我 运行
gradle eclipse
时,Gradle 也从文件系统中提取它们
这可以吗?如果是,怎么做?
听起来您想将 jar 存储在本地 maven 存储库中。
默认情况下,本地 Maven Repo 位于此处 ~/.m2/repository
对于本地 Maven 存储库,目录结构将是严格的,例如这里是我本地的 gson
$ ls -d $PWD/*
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar.sha1
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom.sha1
使用它,我可以使用典型的 gradle 依赖关系和传递依赖关系。
repositories {
mavenLocal()
}
dependencies {
compile "com.google.code.gson:gson:2.6.2"
}
您可以通过 flatdir
导入 jars,但是您将丢失 pom 中声明的传递依赖项。
除了
repositories {
maven {
url file("${rootProject.projectDir}/mavenRepo")
}
}
或者
repositories {
maven {
url file("c:/path/to/repo")
}
}