java - Gradle 传递依赖问题本地 Ivy

标签 java gradle ant ivy

我正在将 ivy + ant 项目转换为 gradle,我制作了引用项目 A(下载其 jar)的 build.gradle 文件,但项目 A 中列出的依赖项未下载到我的项目中

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'


repositories {

     ivy  {
        url 'http://ivyrepodomain:8080/repo'
        layout 'pattern', {
              artifact 'snapshot/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]'
              artifact '3rd-party/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]'
              artifact 'b2bdev/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]'
              ivy '3rd-party/[organisation]/[module]/ivys/ivy-[revision].xml'
              ivy 'snapshot/[organisation]/[module]/ivys/ivy-[revision].xml'
        }
    }

}
targetCompatibility = sourceCompatibility = JavaVersion.VERSION_1_6

dependencies {


    testCompile('mygroup:projectA:17.20.SNAPSHOT') {
        exclude group: 'org.apache.wicket'
        exclude group: 'org.wicketstuff'
    }
    testCompile('org.hibernate.common:hibernate-commons-annotations:4.0.1.Final') {
        transitive = false
    }
    testCompile('org.hibernate:hibernate-ehcache:4.1.2.Final') {
        transitive = false
    }
    testCompile('org.javassist:javassist:3.16.1-GA') {
        transitive = false
    }
    compileOnly('javax.servlet:javax.servlet-api:3.0.1') {
        transitive = false
    }
    compileOnly('dom4j:dom4j:1.6.1') {
        transitive = false
    }
    testCompile('mygroup:projectA:17.20.SNAPSHOT') {
        exclude group: 'org.apache.wicket'
        exclude group: 'org.wicketstuff'
    }
    testCompile('com.h2database:h2:1.4.187') {
        transitive = false
    }
    testCompile('org.apache.derby:derby:10.11.1.1') {
        transitive = false
    }
    testCompile('org.hsqldb:hsqldb:2.3.4') {
        transitive = false
    }
}

项目 A 具有一些依赖项,如下面的 ivy-17.20.SNAPSHOT.xml(托管在 ivy 存储库中)文件中所示

<ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="mygroup" module="projectA" revision="17.20.SNAPSHOT" status="integration" publication="434334345"></info>
<configurations>
<conf name="test" visibility="public" description="Dependencies needed only for testing"/>
<conf name="compile" visibility="public" description="Dependencies required for compile time that are not provided by a container"/>
<conf name="runtime" extends="compile" visibility="public" description="Dependencies not needed for compile time but are needed for runtime"/>
<conf name="provided" visibility="public" description="Dependencies provided by a container"/>
<conf name="ear" visibility="public" description="Dependencies managed by ear level classloader"/>
<conf name="war" visibility="public" description="Dependencies managed by war level classloader"/>
<conf name="default" visibility="public"/>
<conf name="optional" visibility="public"/>
<conf name="sources" visibility="public"/>
</configurations>
<publications>
<artifact name="projectA"/>
<artifact name="projectA-sources" type="src" ext="jar" conf="sources"/>
</publications>
<dependencies>

<!--  Spring and related dependencies  -->
<dependency org="org.springframework" name="spring-core" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-context" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-web" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-beans" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-expression" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-aop" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-orm" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-tx" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-jdbc" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-test" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-context-support" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework" name="spring-oxm" rev="4.1.6.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.data" name="spring-data-neo4j" rev="2.1.0.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.data" name="spring-data-neo4j-tx" rev="2.1.0.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.batch" name="spring-batch-core" rev="2.1.8.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.batch" name="spring-batch-infrastructure" rev="2.1.8.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.security" name="spring-security-core" rev="3.2.4.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.security" name="spring-security-web" rev="3.2.4.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.security" name="spring-security-config" rev="3.2.4.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.security" name="spring-security-ldap" rev="3.2.4.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.springframework.ldap" name="spring-ldap" rev="1.3.0.RELEASE" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.apache.velocity" name="velocity" rev="1.7" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="aopalliance" name="aopalliance" rev="1.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.microsoft.sqlserver" name="sqljdbc" rev="4.0.2206.100" transitive="false" conf="provided->default"/>
<dependency org="com.ibm.db2" name="db2jcc" rev="3.62.56" conf="provided->default"/>
<dependency org="com.ibm.db2" name="db2jcc_license" rev="1.0" conf="provided->default"/>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.1" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-lang" name="commons-lang" rev="2.6" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-beanutils" name="commons-beanutils" rev="1.8.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-dbcp" name="commons-dbcp" rev="1.2.2" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-pool" name="commons-pool" rev="1.5.2" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-collections" name="commons-collections" rev="3.2" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-io" name="commons-io" rev="1.4" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-httpclient" name="commons-httpclient" rev="3.1" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="commons-codec" name="commons-codec" rev="1.6" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.google.guava" name="guava" rev="16.0.1" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-core" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-annotation" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-servlet" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-web" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-spring" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.yammer.metrics" name="metrics-logback" rev="2.2.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.apache.wicket" name="wicket-core" rev="1.5.13" transitive="false" conf="compile->default; war->default"/>
<dependency org="org.apache.wicket" name="wicket-ioc" rev="1.5.13" transitive="false" conf="compile->default; war->default"/>
<dependency org="org.apache.wicket" name="wicket-spring" rev="1.5.13" transitive="false" conf="compile->default; war->default"/>
<dependency org="org.apache.wicket" name="wicket-util" rev="1.5.13" transitive="false" conf="compile->default; war->default"/>
<dependency org="org.apache.wicket" name="wicket-request" rev="1.5.13" transitive="false" conf="compile->default; war->default"/>
<dependency org="org.hibernate" name="hibernate-core" rev="4.1.2.Final" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.hibernate.javax.persistence" name="hibernate-jpa-2.0-api" rev="1.0.1.Final" transitive="false" conf="provided->default"/>
<dependency org="org.hibernate" name="hibernate-validator" rev="4.1.0.Final" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.jasypt" name="jasypt" rev="1.9.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.jasypt" name="jasypt-hibernate4" rev="1.9.0" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="net.sf.ehcache" name="ehcache-core" rev="2.5.1" transitive="false" conf="compile->default; ear->default"/>
<dependency org="ch.qos.logback" name="logback-core" rev="1.0.9" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="ch.qos.logback" name="logback-classic" rev="1.0.9" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.2" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.7.2" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="org.slf4j" name="log4j-over-slf4j" rev="1.7.2" conf="compile->default; war->default; ear->default" transitive="false"/>
<dependency org="cglib" name="cglib-nodep" rev="2.1_3" transitive="false" conf="compile->default; war->default; ear->default"/>
<dependency org="com.rsa" name="axm-runtime-api" rev="6.1" conf="compile->default; war->default; ear->default" transitive="false"/>
<dependency org="com.rsa" name="jsafeJCE" rev="3.5.2" conf="runtime->default; war->default; ear->default" transitive="false"/>
<dependency org="junit" name="junit" rev="4.11" conf="compile->default;test->default" transitive="false"/>
<dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="provided->default" transitive="false"/>
<dependency org="javax.transaction" name="jta" rev="1.1" conf="provided->default" transitive="false"/>
<dependency org="org.unitils" name="unitils-core" rev="3.4.2" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.unitils" name="unitils-database" rev="3.4.2" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.unitils" name="unitils-dbunit" rev="3.4.2" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.unitils" name="unitils-orm" rev="3.4.2" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.unitils" name="unitils-spring" rev="3.4.2" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.dbunit" name="dbunit" rev="2.4.8" conf="compile->default;test->default" transitive="false"/>
<dependency org="org.mockito" name="mockito-all" rev="1.9.0" conf="compile->default;test->default" transitive="false"/>
</dependencies>
</ivy-module>

请帮忙解决这个问题 谢谢

最佳答案

单ivy模块多项目gradle构建教程给出: https://gist.github.com/BorePlusPlus/4145778

完整示例

有一个完整的演示示例,它使用多项目构建发布:https://docs.gradle.org/current/userguide/publishing_ivy.html#publishing_ivy:example

希望这会阐明您的多项目 ivy 和 gradle 组合。


还需要添加

apply plugin: 'ivy-publish'

那也是你没有添加到你的 build.gradle 文件中的。

有关更多信息,您可以阅读本教程:Getting Started With Gradle: Creating a Multi-Project Build


更新#1:

我已经在 github 中创建了一个项目 https://github.com/rizvi/java-multi-project

克隆项目并运行以下 2 个命令

  1. gradle 干净
  2. 渐变 jar

控制台

mac@My-PC:~/Desktop/gradleproject/java-multi-project$ gradle jar
:project2:compileJava UP-TO-DATE
:project2:processResources UP-TO-DATE
:project2:classes UP-TO-DATE
:project2:copyToLib
:project2:jar
:project1:compileJava UP-TO-DATE
:project1:processResources UP-TO-DATE
:project1:classes UP-TO-DATE
:project1:copyToLib
:project1:jar

BUILD SUCCESSFUL

Total time: 20.337 secs

This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.10/userguide/gradle_daemon.html

这将创建 2 个项目。他们是

i) 项目1

ii) 项目2

In project1/build/lib folder you will get commons-collections-3.2.2.jar, hamcrest-core-1.3.jar, junit-4.12.jar and project2-1.0.jar.

In project2/build/lib folder you will get commons-collections-3.2.2.jar only

这里project1依赖于project2。所以 project1 包含 project2 的 jar 文件和依赖的 jar 文件。

希望它能满足您的需求。 :)


更新#2:

有一个名为gradle-ivyxml-plugin 的插件。但它有各种类型的障碍。它们在下面给出。

  1. 故意不对任何 ivysettings.xml 文件做任何事情。
  2. 故意忽略与发布相关的 ivy.xml 元素和 属性。

不支持的 ivy.xml 特性

支持大多数 ivy.xml 元素和属性。在这里,我们记录那些不是的。

以下 ivy.xml 元素和属性将被忽略。我尽了最大努力检测并支持、抛出或警告,但公共(public) Ivy API 不允许访问这些设置。

<conflicts> (and all attrs and sub-elements)
<dependencies><dependency><conf>  (For conf-mapping)
<dependencies><dependency><artifact conf="...">  attr.
<dependencies><dependency><*><conf>

以下元素和属性是有意禁止的。我们不支持它们,然后默默地忽略会产生误导,我们可以检测它们的用法。

<dependencies><dependency><exclude artifact="..." type="..."
    ext="..." matcher="..." cont="..."
    (i.e. only 'org' and 'module' attrs are supported).
<dependencies><override>
<dependencies><dependency branch="..." force="..."  attrs.
 (Branch and force have no support in Gradle).

资源链接:

https://github.com/unsaved/gradle-ivyxml-plugin/tree/master/doc

此处提供定制的最小解决方案:

  1. http://technicallypossible.blogspot.com/2009/12/using-ivyxml-with-gradle.html

关于java - Gradle 传递依赖问题本地 Ivy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812698/

相关文章:

java - Android Java 异常 - 手动抛出时它们如何工作?

java - 当存在一些空标记时,如何在Java中分离标记

java - Gradle 构建失败,出现异常 : java. exe' 以非零退出值 2 完成

android - 如何在 android 中修复错误 "Could not find com.android.tools.build:gradle:3.4.1"?

java - 在 eclipse 中构建项目,但不是从终端/jenkins - 使用 Ant

java - 连接到在 Docker 中运行的 Kafka

linux - Gradle Copy Task 导致文件权限问题

apache-flex - 使用 ant mxmlc 任务将运行时库路径添加到 Flex 构建配置

templates - Ant-Ivy-Scala模板:有什么改进建议吗?

java - 如何停止使用匿名类创建的线程?