Use custom IVY cache directories to allow for concurrent builds
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 01 Aug 2017 10:42:53 +0100
changeset 3734 d42565cecc0c
parent 3733 2f5f3724897b
child 3763 fb831d0bce5c
child 3776 1a2b51b35b25
Use custom IVY cache directories to allow for concurrent builds ...otherwise IVY would fail to resolve artifacts when run concurrently (such as on CI server).
java/build.common.xml
java/ivy-settings.xml
libs/java/build.ivy.xml
--- a/java/build.common.xml	Tue Aug 01 10:40:52 2017 +0100
+++ b/java/build.common.xml	Tue Aug 01 10:42:53 2017 +0100
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project xmlns:ivy="antlib:org.apache.ivy.ant">
+<project xmlns:ivy="antlib:org.apache.ivy.ant">    
     <property name="ivy.jar" value="${TOP}/libjava/java/ivy-2.4.0.jar"/>
+    <property name="ivy.settings.xml" value="${TOP}/libjava/java/ivy-settings.xml"/>
 
     <property name="build.src.dir" value="src"/>
     <property name="build.bin.dir" value="bin"/>
@@ -36,6 +37,10 @@
         <pathelement path="${build.bin-tests.dir}"/>
     </path>
 
+    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar}" />
+    <ivy:settings file="${ivy.settings.xml}"/>      	   
+    
+
 
     <target name="build" depends="compile"/>
 
@@ -66,8 +71,7 @@
     <target name="libs.main">
 	<mkdir dir="${build.libs.dir}"/>
     </target>
-    <target name="libs.fetch" if="ivy.dep.file.present">
-	<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar}" />
+    <target name="libs.fetch" if="ivy.dep.file.present">	
 	<ivy:retrieve conf="binaries" pattern="${build.libs.dir}/[artifact]-[revision].[ext]" />
 	<ivy:retrieve conf="sources"  pattern="${build.libs-src.dir}/[artifact]-[revision].[ext]" />
     </target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/ivy-settings.xml	Tue Aug 01 10:42:53 2017 +0100
@@ -0,0 +1,12 @@
+<ivysettings>
+     <properties environment="env"/>
+     <property name="ivy.executor-number" value="${env.EXECUTOR_NUMBER}" override="false" ifset="env.EXECUTOR_NUMBER"/>
+     <property name="ivy.executor-number" value="0" override="false"/>
+     <caches        
+        defaultCacheDir="${ivy.default.ivy.user.dir}/caches/${ivy.executor-number}/default"
+        resolutionCacheDir="${ivy.default.ivy.user.dir}/caches/${ivy.executor-number}/resolution"
+        />
+    <settings defaultResolver="default"/>
+    <include url="${ivy.default.settings.dir}/ivysettings.xml"/>
+    <lock-strategies>artifact-lock-nio</lock-strategies>
+</ivysettings>
\ No newline at end of file
--- a/libs/java/build.ivy.xml	Tue Aug 01 10:40:52 2017 +0100
+++ b/libs/java/build.ivy.xml	Tue Aug 01 10:42:53 2017 +0100
@@ -2,10 +2,12 @@
 <?eclipse.ant.import?>
 <project xmlns:ivy="antlib:org.apache.ivy.ant" name="stx.libjava.tools.dependencies" default="dependencies">
     <property name="ivy.jar" value="../../java/ivy-2.4.0.jar"/>
-    <target name="dependencies" description="Download required libraries">
-        <taskdef 
-            resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
-            classpath="${ivy.jar}"/>
+    <property name="ivy.settings.xml" value="../../java/ivy-settings.xml"/>
+
+    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar}"/>
+    <ivy:settings file="${ivy.settings.xml}"/>
+
+    <target name="dependencies" description="Download required libraries">        
          <ivy:retrieve 
                 conf="binaries" 
                 pattern="libs/[artifact]-[revision].[ext]"/>