Reputation: 784
I am converting a ivy + ant project to gradle and I made the build.gradle file which refers to a projectA(downloads its jar) but the dependencies listed in projectA are not downloaded in my project
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
}
}
The project A has some dependencies as in this ivy-17.20.SNAPSHOT.xml(hosted on the ivy repo) file below
<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>
Kindly help in resolving this Thanks
Upvotes: 2
Views: 756
Reputation: 29140
Single ivy module multi project gradle build is given in this tutorial: https://gist.github.com/BorePlusPlus/4145778
There is a complete example with demonstration which is publishing with a multi-project build: https://docs.gradle.org/current/userguide/publishing_ivy.html#publishing_ivy:example
Hope this will clarify your ivy and gradle combination for multi project.
You also need to add
apply plugin: 'ivy-publish'
thats one you not added in your build.gradle
file also.
For more, you can go through this tutorial: Getting Started With Gradle: Creating a Multi-Project Build
I have create a project in github https://github.com/rizvi/java-multi-project
Clone the project and run the following 2 command
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
This will create 2 project. They are
i) project1
ii) project2
In project1/build/lib folder you will get
commons-collections-3.2.2.jar
,hamcrest-core-1.3.jar
,junit-4.12.jar
andproject2-1.0.jar
.In project2/build/lib folder you will get
commons-collections-3.2.2.jar
only
Here project1 is dependent on project2. So project1 contains project2's jar file and dependent jar files.
Hope it will fulfill your demand. :)
There is a plugin named by gradle-ivyxml-plugin. but it has various types of obstacles. They are given below.
ivysettings.xml
file.ivy.xml
elements and
attributes.Most ivy.xml elements and attributes are supported. Here we document those which are not.
The following ivy.xml elements and attributes are ignored. I did my best to detect and either, support, throw or warn, but the public Ivy API just does not allow for access to these settings.
<conflicts> (and all attrs and sub-elements)
<dependencies><dependency><conf> (For conf-mapping)
<dependencies><dependency><artifact conf="..."> attr.
<dependencies><dependency><*><conf>
The following elements and attribute are purposefully prohibited. We don't support them, it would be misleading to silently ignore then, and we can detect their usage.
<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
Upvotes: 1