使用Gradle从文件系统中解析jar

时间:2016-11-15 02:56:59

标签: gradle pom.xml jcenter maven-central

我一直在“运动鞋网”一套罐子,我最终会发布到Gradle友好的回购(Artifactory)但是,暂时,必须留在我的机器本地。

我需要在Gradle项目中使用这些jar,它们不仅需要能够将它们列为dependencies,而且还使用Eclipse插件来解析Eclipse IDE中的依赖项。

这些罐子都有POM并且有自己的传递依赖(所有这些都在Maven Central和JCenter等典型的存储库中)。

我正在寻找一种在我的文件系统上某处保存这些jar的方法,然后将它们解析为正常dependencies,包括解决它们的传递依赖性,并且还要使它与Gradle兼容Eclipse插件工作正常。

同样,期望的结果将是:

  • 将这些罐子作为依赖项添加,例如~/special-jars/*
  • 无论在每个“特殊jar”的POM中定义了什么依赖项,请解决这些
  • 当我运行gradle eclipse时,Gradle也会从文件系统中删除它们

这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:1)

听起来你想将你的罐子存放在本地的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导入jar,但是会丢失在pom中声明的传递依赖项。

答案 1 :(得分:0)

除了JBirdVegas' answer之外,您还可以使用自定义位置。例如,您可以使用项目子文件夹

repositories {
   maven {
      url file("${rootProject.projectDir}/mavenRepo")
   }
}

或者

repositories {
   maven {
      url file("c:/path/to/repo")
   }
}