gradle - 如何在jar中声明jar的依赖项

时间:2010-08-10 02:51:00

标签: ivy gradle

使用gradle,我正在使用archiva存储库中的构建。其中一个罐子(javax.jms_1.1.0.200810061358.jar)具有以下内容:

about.html
about_files
LICENSE.txt
jms.jar
META-INF
MANIFEST.MF

我需要的jar实际上是javax.jms_1.1.0.200810061358.jar

中的jms.jar

我能够使用这个jar的唯一方法就是拉jms.jar 在存储库的javax.jms_1.1.0.200810081358.jar之外并保存它 到文件系统并通过以下方式使用它:

repositories { flatDir: my_dir_with_jms.jar_in_it}
gradle列表中有人建议使用常春藤包装程序解析器。

我看了link并且是 离开很困惑。我确实有其他常春藤解析器设置如下:

addIvyPattern 'http://archivaserver:8080/archiva/repository/osgi-internal/[organisation]/[module]/[revision]/ivy_[revision].xml'
   addArtifactPattern
"http://archivaserver:8080/archiva/repository/osgi-official/[organisation]/[organisation]/[module]_[revision](-[classifier]).[ext]"

有人知道这方面有一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

解决依赖关系中的依赖关系需要使用常春藤packager resolver

我从未在Gradle中配置包解析器,但我认为它的工作方式如下(引用webpage

repositories {
    add(new org.apache.ivy.plugins.resolver.packager.PackagerResolver()) {
        name = 'local Ivy packagers'

        buildRoot = file("${gradle.gradleUserHomeDir}/packager/build")
        resourceCache = file("${gradle.gradleUserHomeDir}/packager/cache")

        addIvyPattern      "file:///${project.rootDir}/ivy/[organisation]/[module]/[revision]/ivy.xml"
        addArtifactPattern "file:///${project.rootDir}/ivy/[organisation]/[module]/[revision]/packager.xml"
    }
}

dependencies {
    compile group: 'org.myorg', name: 'jms', version: '1.1.0.200810061358'
}

解析器需要以下文件用于声明的依赖项:

ivy/org.myorg/jms/1.1.0.200810061358/ivy.xml
ivy/org.myorg/jms/1.1.0.200810061358/packager.xml

的ivy.xml

描述模块,在这种情况下声明发布了哪些工件:

<ivy-module version="2.0">
    <info organisation="org.myorg" module="jms" revision="1.1.0.200810061358" status="release"/>

    <publications>
        <artifact name="jms" type="jar"/>
    </publications>

</ivy-module>

packager.xml

描述封闭存档的位置以及如何提取jms.jar的说明:

<packager-module version="1.0">

    <resource dest="archive" url="http://archivaserver:8080/archiva/repository/??/javax.jms_1.1.0.200810061358.jar" sha1="????"/>

    <build>
        <move file="archive/jms.jar" tofile="artifacts/jars/jms.jar"/>
    </build>

</packager-module>

构建标记下的内容用于生成ANT脚本。有关详细信息,请阅读ivy documentation

的“打包说明”部分