Author: xavier
Date: Wed Nov 28 04:33:44 2007
New Revision: 598983
URL: http://svn.apache.org/viewvc?rev=598983&view=rev
Log:
review multi-project tutorial (IVY-591)
Added:
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt
(with props)
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt
(with props)
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt
(with props)
Removed:
incubator/ivy/core/trunk/doc/samples/multi-project/
Modified:
incubator/ivy/core/trunk/doc/tutorial/multiproject.html
Added: incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt?rev=598983&view=auto
==============================================================================
--- incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt
(added)
+++ incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt Wed
Nov 28 04:33:44 2007
@@ -0,0 +1,16 @@
+Buildfile: build.xml
+
+Main targets:
+
+ clean --> clean the project
+ clean-build --> clean the project built files
+ clean-lib --> clean the project libraries directory (dependencies)
+ clean-local --> cleans the local repository for the current module
+ compile --> compile the project
+ jar --> make a jar file for this project
+ publish --> publish this project in the ivy repository
+ publish-local --> publish this project in the local ivy repository
+ report --> generates a report of dependencies
+ resolve --> resolve and retrieve dependencies with ivy
+ run --> compile and run the project
+Default target: compile
\ No newline at end of file
Propchange:
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-find-antp.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt?rev=598983&view=auto
==============================================================================
--- incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt
(added)
+++ incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt
Wed Nov 28 04:33:44 2007
@@ -0,0 +1,7 @@
+Buildfile: build.xml
+
+Main targets:
+
+ clean clean tutorial: delete repository, ivy cache, and all projects
+ clean-all clean all projects
+ publish-all compile, jar and publish all projects in the right order
\ No newline at end of file
Propchange:
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-antp.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added:
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt?rev=598983&view=auto
==============================================================================
---
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt
(added)
+++
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt
Wed Nov 28 04:33:44 2007
@@ -0,0 +1,338 @@
+Buildfile: build.xml
+
+load-ivy:
+
+buildlist:
+[ivy:buildlist] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+[ivy:buildlist] No ivy:settings found for the default reference
'ivy.instance'. A default instance will be used
+[ivy:buildlist] no settings file found, using default...
+[ivy:buildlist] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+publish-all:
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version\lib
+[ivy:resolve] :: resolving dependencies ::
org.apache.ivy.example#version;[EMAIL PROTECTED]
+[ivy:resolve] confs: [default]
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | default | 0 | 0 | 0 | 0 || 0 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#version
+[ivy:retrieve] confs: [default]
+[ivy:retrieve] 0 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 1 source file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version\build\classes
+ [javac] Note:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version\src\version\Version.java
uses unchecked or unsafe operations.
+ [javac] Note: Recompile with -Xlint:unchecked for details.
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version\build\version.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#version;[EMAIL
PROTECTED] :: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:13 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#version
+[ivy:publish] published version to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version/../../common/../repository/shared/org.apache.ivy.example/version/1.0-dev-b1/jars/version.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\version/../../common/../repository/shared/org.apache.ivy.example/version/1.0-dev-b1/ivys/ivy.xml
+ [echo] project version released with version 1.0-dev-b1
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list\lib
+[ivy:resolve] :: resolving dependencies :: org.apache.ivy.example#list;[EMAIL
PROTECTED]
+[ivy:resolve] confs: [core, standalone]
+[ivy:resolve] found org.apache.ivy.example#version;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#version;latest.integration
+[ivy:resolve] found commons-cli#commons-cli;1.0 in public
+[ivy:resolve] found commons-logging#commons-logging;1.0 in public
+[ivy:resolve] found commons-lang#commons-lang;1.0 in public
+[ivy:resolve] found junit#junit;3.7 in public
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | core | 1 | 1 | 0 | 0 || 1 | 0 |
+ | standalone | 5 | 1 | 0 | 0 || 5 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#list
+[ivy:retrieve] confs: [core, standalone]
+[ivy:retrieve] 5 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 2 source files to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list\build\classes
+ [javac] Note:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list\src\list\ListFile.java
uses unchecked or unsafe operations.
+ [javac] Note: Recompile with -Xlint:unchecked for details.
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list\build\list.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#list;[EMAIL PROTECTED]
:: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:16 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#list
+[ivy:publish] published list to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list/../../common/../repository/shared/org.apache.ivy.example/list/1.0-dev-b1/jars/list.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\list/../../common/../repository/shared/org.apache.ivy.example/list/1.0-dev-b1/ivys/ivy.xml
+ [echo] project list released with version 1.0-dev-b1
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find\lib
+[ivy:resolve] :: resolving dependencies :: org.apache.ivy.example#find;[EMAIL
PROTECTED]
+[ivy:resolve] confs: [core, standalone]
+[ivy:resolve] found org.apache.ivy.example#version;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#version;latest.integration
+[ivy:resolve] found org.apache.ivy.example#list;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#list;latest.integration
+[ivy:resolve] found commons-collections#commons-collections;3.1 in public
+[ivy:resolve] found commons-cli#commons-cli;1.0 in public
+[ivy:resolve] found commons-logging#commons-logging;1.0 in public
+[ivy:resolve] found commons-lang#commons-lang;1.0 in public
+[ivy:resolve] found junit#junit;3.7 in public
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | core | 3 | 2 | 0 | 0 || 3 | 0 |
+ | standalone | 7 | 2 | 0 | 0 || 7 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#find
+[ivy:retrieve] confs: [core, standalone]
+[ivy:retrieve] 7 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 2 source files to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find\build\classes
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find\build\find.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#find;[EMAIL PROTECTED]
:: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:18 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#find
+[ivy:publish] published find to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find/../../common/../repository/shared/org.apache.ivy.example/find/1.0-dev-b1/jars/find.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\find/../../common/../repository/shared/org.apache.ivy.example/find/1.0-dev-b1/ivys/ivy.xml
+ [echo] project find released with version 1.0-dev-b1
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size\lib
+[ivy:resolve] :: resolving dependencies :: org.apache.ivy.example#size;[EMAIL
PROTECTED]
+[ivy:resolve] confs: [default]
+[ivy:resolve] found org.apache.ivy.example#version;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#version;latest.integration
+[ivy:resolve] found org.apache.ivy.example#list;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#list;latest.integration
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | default | 2 | 2 | 0 | 0 || 2 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#size
+[ivy:retrieve] confs: [default]
+[ivy:retrieve] 2 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 1 source file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size\build\classes
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size\build\size.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#size;[EMAIL PROTECTED]
:: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:21 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#size
+[ivy:publish] published size to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size/../../common/../repository/shared/org.apache.ivy.example/size/1.0-dev-b1/jars/size.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\size/../../common/../repository/shared/org.apache.ivy.example/size/1.0-dev-b1/ivys/ivy.xml
+ [echo] project size released with version 1.0-dev-b1
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere\lib
+[ivy:resolve] :: resolving dependencies ::
org.apache.ivy.example#sizewhere;[EMAIL PROTECTED]
+[ivy:resolve] confs: [core, standalone]
+[ivy:resolve] found org.apache.ivy.example#version;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#version;latest.integration
+[ivy:resolve] found org.apache.ivy.example#size;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#size;latest.integration
+[ivy:resolve] found org.apache.ivy.example#list;1.0-dev-b1 in shared
+[ivy:resolve] found org.apache.ivy.example#find;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#find;latest.integration
+[ivy:resolve] found commons-collections#commons-collections;3.1 in public
+[ivy:resolve] found commons-cli#commons-cli;1.0 in public
+[ivy:resolve] found commons-logging#commons-logging;1.0 in public
+[ivy:resolve] found commons-lang#commons-lang;1.0 in public
+[ivy:resolve] found junit#junit;3.7 in public
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | core | 5 | 3 | 0 | 0 || 5 | 0 |
+ | standalone | 9 | 3 | 0 | 0 || 9 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#sizewhere
+[ivy:retrieve] confs: [core, standalone]
+[ivy:retrieve] 9 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 2 source files to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere\build\classes
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere\build\sizewhere.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#sizewhere;[EMAIL
PROTECTED] :: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:24 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#sizewhere
+[ivy:publish] published sizewhere to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere/../../common/../repository/shared/org.apache.ivy.example/sizewhere/1.0-dev-b1/jars/sizewhere.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\sizewhere/../../common/../repository/shared/org.apache.ivy.example/sizewhere/1.0-dev-b1/ivys/ivy.xml
+ [echo] project sizewhere released with version 1.0-dev-b1
+
+clean-build:
+
+load-ivy:
+
+ivy-new-version:
+ [ivy:info] :: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+ [ivy:info] No ivy:settings found for the default reference 'ivy.instance'. A
default instance will be used
+ [ivy:info] no settings file found, using default...
+ [ivy:info] :: Ivy 2.0.0-beta1-local-20071128121716 - 20071128121716 ::
http://ant.apache.org/ivy/ ::
+:: loading settings :: url =
jar:file:/D:/Users/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
+
+version:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console\build\classes
+
+clean-lib:
+
+resolve:
+ [mkdir] Created dir:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console\lib
+[ivy:resolve] :: resolving dependencies ::
org.apache.ivy.example#console;[EMAIL PROTECTED]
+[ivy:resolve] confs: [default]
+[ivy:resolve] found org.apache.ivy.example#version;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#version;latest.integration
+[ivy:resolve] found org.apache.ivy.example#list;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#list;latest.integration
+[ivy:resolve] found commons-cli#commons-cli;1.0 in public
+[ivy:resolve] found commons-logging#commons-logging;1.0 in public
+[ivy:resolve] found commons-lang#commons-lang;1.0 in public
+[ivy:resolve] found junit#junit;3.7 in public
+[ivy:resolve] found org.apache.ivy.example#find;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1] org.apache.ivy.example#find;latest.integration
+[ivy:resolve] found commons-collections#commons-collections;3.1 in public
+[ivy:resolve] found org.apache.ivy.example#sizewhere;1.0-dev-b1 in shared
+[ivy:resolve] [1.0-dev-b1]
org.apache.ivy.example#sizewhere;latest.integration
+[ivy:resolve] found org.apache.ivy.example#size;1.0-dev-b1 in shared
+[ivy:resolve] :: resolution report ::
+ ---------------------------------------------------------------------
+ | | modules || artifacts |
+ | conf | number| search|dwnlded|evicted|| number|dwnlded|
+ ---------------------------------------------------------------------
+ | default | 10 | 4 | 0 | 0 || 10 | 0 |
+ ---------------------------------------------------------------------
+[ivy:retrieve] :: retrieving :: org.apache.ivy.example#console
+[ivy:retrieve] confs: [default]
+[ivy:retrieve] 10 artifacts copied, 0 already retrieved
+
+compile:
+ [javac] Compiling 1 source file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console\build\classes
+ [javac] Note:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console\src\console\Main.java
uses unchecked or unsafe operations.
+ [javac] Note: Recompile with -Xlint:unchecked for details.
+
+jar:
+ [jar] Building jar:
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console\build\console.jar
+
+publish:
+[ivy:publish] :: delivering :: org.apache.ivy.example#console;[EMAIL
PROTECTED] :: 1.0-dev-b1 :: release :: Wed Nov 28 13:10:27 CET 2007
+[ivy:publish] delivering ivy file to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console/build/ivy.xml
+[ivy:publish] :: publishing :: org.apache.ivy.example#console
+[ivy:publish] published console to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console/../../common/../repository/shared/org.apache.ivy.example/console/1.0-dev-b1/jars/console.jar
+[ivy:publish] published ivy to
D:\users\xavier\documents\wkspace\apache\ivy\core\trunk\src\example\multi-project\projects\console/../../common/../repository/shared/org.apache.ivy.example/console/1.0-dev-b1/ivys/ivy.xml
+ [echo] project console released with version 1.0-dev-b1
+
+BUILD SUCCESSFUL
\ No newline at end of file
Propchange:
incubator/ivy/core/trunk/doc/tutorial/log/multi-project-general-publishall.txt
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ivy/core/trunk/doc/tutorial/multiproject.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/tutorial/multiproject.html?rev=598983&r1=598982&r2=598983&view=diff
==============================================================================
--- incubator/ivy/core/trunk/doc/tutorial/multiproject.html (original)
+++ incubator/ivy/core/trunk/doc/tutorial/multiproject.html Wed Nov 28 04:33:44
2007
@@ -25,11 +25,9 @@
</head>
<body>
<textarea id="xooki-source">
-<strong>Warning: tutorial in progress !</strong>
-
In the previous tutorial you have seen how to deal with dependencies between
two simple projects.
-This tutorial will guide you through the use of ivy in a more complete
environment. All the sources of this tutorial are available in
src/example/multi-project in ivy distribution (warning: the sources attached
with ivy 1.3 contain an error in the common.xml file. Please use either latest
build to find proper example sources or replace the common.xml file with <a
href="../samples/multi-project/common.xml">this one</a>).
+This tutorial will guide you through the use of ivy in a more complete
environment. All the sources of this tutorial are available in
src/example/multi-project in ivy distribution.
<h1>Context</h1>
Here is a 10000ft overview of the projects involved in this tutorial:
@@ -43,10 +41,10 @@
</ul>
For sure this is not aimed to demonstrate how to develop a complex app or give
indication of advanced algorithm :-)
-But this gives a simple understanding of how ivy can be used to develop an
application divided in multiple modules.
+But this gives a simple understanding of how Ant+Ivy can be used to develop an
application divided in multiple modules.
Now, here is how these modules relate to each other:
-<a href="../samples/projects-dependencies-graph.jpg"><img
src="../samples/projects-dependencies-graph-small.jpg" alt="dependencies
graph"/><br/><center><i>click to enlarge</i></center></a>
+<center><a href="../samples/projects-dependencies-graph.jpg"><img
src="../samples/projects-dependencies-graph-small.jpg" alt="dependencies
graph"/><br/><i>click to enlarge</i></a></center>
Modules in yellow are the modules described in this tutorial, and modules in
blue are external dependencies (we will see how to generate this graph later in
this tutorial).
@@ -55,11 +53,11 @@
<h1>The example files</h1>
The sources for this tutorial can be found in src/example/multi-project in the
ivy distribution. In this directory, you will find the following files:
<ul>
-<li><a href="../samples/multi-project/build.xml">build.xml</a></li>This is a
root build file which can be used to call targets on all modules, in the order
of their dependencies (ensuring that a module is always built before any module
depending on it, for instance)
+<li>[[svn:src/example/multi-project/build.xml build.xml]]</li>This is a root
build file which can be used to call targets on all modules, in the order of
their dependencies (ensuring that a module is always built before any module
depending on it, for instance)
<li>common
<ul>
-<li><a href="../samples/multi-project/common.xml">common.xml</a></li> the
common build file imported by all build.xml files for each project. This build
defines the targets which can be used in all projects.
-<li>build.properties</li>some properties common to all projects
+<li>[[svn:src/example//multi-project/common/common.xml common.xml]]</li> the
common build file imported by all build.xml files for each project. This build
defines the targets which can be used in all projects.
+<li>[[svn:src/example//multi-project/common/build.properties
build.properties]]</li>some properties common to all projects
</ul>
</li>
<li>projects</li>
@@ -70,7 +68,7 @@
<code type="xml">
<ivy-module version="1.0">
<info
- organisation="jayasoft"
+ organisation="org.apache.ivy.example"
module="find"
status="integration"/>
<configurations>
@@ -83,8 +81,8 @@
<dependencies>
<dependency name="version" rev="latest.integration" conf="core->default"
/>
<dependency name="list" rev="latest.integration" conf="core" />
- <dependency org="apache" name="commons-collections" rev="3.1"
conf="core->default" />
- <dependency org="apache" name="commons-cli" rev="1.0"
conf="standalone->default" />
+ <dependency org="commons-collections" name="commons-collections"
rev="3.1" conf="core->default" />
+ <dependency org="commons-cli" name="commons-cli" rev="1.0"
conf="standalone->default" />
</dependencies>
</ivy-module>
</code>
@@ -106,72 +104,85 @@
</ul>
</ul>
-Note that this doesn't demonstrate good practice for software development in
general, in particular you won't find any unit test in this samples, even if we
think unit testing is very important. But this isn't the aim of this tutorial.
+Note that this doesn't demonstrate good practice for software development in
general, in particular you won't find any unit test in these samples, even if
we think unit testing is very important. But this isn't the aim of this
tutorial.
-Now that you are a bit more familiar with the structure, let's have a look at
the most important part of this example: the common build file. Indeed, as you
have seen all modules build files only import the common build file, and
defines their dependencies in their ivy files (with which you should begin to
be familiar).
+Now that you are a bit more familiar with the structure, let's have a look at
the most important part of this example: the common build file. Indeed, as you
have seen all modules build files only import the common build file, and
defines their dependencies in their ivy files (which you should begin to be
familiar with).
So, here are some aspects of this common build file:
<h2>ivy settings</h2>
<code type="xml">
+<!-- setup ivy default configuration with some custom info -->
+<property name="ivy.local.default.root" value="${repository.dir}/local"/>
+<property name="ivy.shared.default.root" value="${repository.dir}/shared"/>
- <!-- setup ivy default configuration with some custom info -->
- <property name="ivy.local.default.root" value="${repository.dir}/local"/>
- <property name="ivy.shared.default.root" value="${repository.dir}/shared"/>
-
- <!-- here is how we would have configured ivy if we had our own
ivysettings file
- <ivy:settings file="${common.dir}/ivysettings.xml" />
- -->
-</target>
+<!-- here is how we would have configured ivy if we had our own ivysettings
file
+<ivy:settings file="${common.dir}/ivysettings.xml" id="ivy.instance" />
+-->
</code>
-This declaration configures ivy only by setting two properties: the location
for the local repository and the location for the shared repository. It's the
only settings done here, since ivy 1.3 is configured by default to work in a
team environment (see [[tutorial/defaultconf default settings tutorial]] for
details about this). For sure in a real environment the shared repository
location would rather be in a team shared directory (or in a more complex
repository, again see the default settings tutorial to see how to use something
really different).
-There is only in comments how the settings would have been done if the default
settings wasn't ok for our purpose.
+This declaration configures ivy only by setting two properties: the location
for the local repository and the location for the shared repository. It's the
only settings done here, since ivy is configured by default to work in a team
environment (see [[tutorial/defaultconf default settings tutorial]] for details
about this). For sure in a real environment the shared repository location
would rather be in a team shared directory (or in a more complex repository,
again see the default settings tutorial to see how to use something really
different).
+Commented out you can see how the settings would have been done if the default
settings wasn't ok for our purpose.
<h2>resolve dependencies</h2>
<code type="xml">
-<target name="resolve" depends="clean-lib" description="--> retrieve
dependencies with ivy">
+<target name="resolve" depends="clean-lib, load-ivy" description="--> resolve
and retrieve dependencies with ivy">
<mkdir dir="${lib.dir}"/> <!-- not usually necessary, ivy creates the
directory IF there are dependencies -->
- <!-- this target is named resolve even if we do a retrieve:
- in fact a resolve will be called, and then the retrieve will simply
copy files in the lib directory -->
+
+ <!-- the call to resolve is not mandatory, retrieve makes an implicit call
if we don't -->
+ <ivy:resolve file="${ivy.file}"/>
<ivy:retrieve pattern="${lib.dir}/[artifact].[ext]" />
</target>
</code>
-Here we see that we only call a retrieve task, the resolve being done
automatically with default parameters (which are ok in our case). So here
nothing special, we simply use ivy to retrieve dependencies in the lib
directory, putting artifacts without revision in their names (it's easier to
use with an ide, for instance).
+You should begin to be familiar with this kind of use of Ivy. We call resolve
explicitly to use the ivy file configured (the default would have been fine),
and then call retrieve to copy resolved dependencies artifacts from the cache
to a local lib directory. The pattern is also used to name the artifacts in the
lib dir with their name and extension only (without revision), this is easier
to use with an IDE, the IDE configuration won't change when the artifacts
version change.
+
+<h2>ivy-new-version</h2>
+<code type="xml">
+<target name="ivy-new-version" depends="load-ivy" unless="ivy.new.revision">
+ <!-- default module version prefix value -->
+ <property name="module.version.prefix"
value="${module.version.target}-dev-b" />
+
+ <!-- asks to ivy an available version number -->
+ <ivy:info file="${ivy.file}" />
+ <ivy:buildnumber
+ organisation="${ivy.organisation}" module="${ivy.module}"
+ revision="${module.version.prefix}" defaultBuildNumber="1" revSep=""/>
+</target>
+</code>
+This target is used to ask Ivy to find a new version for a module. To get
detailed about the module we are dealing with, we use directly the information
found in the ivy file using the ivy:info task. Then the [[ant:buildnumber]]
task is used to get a new revision, based on a prefix we set with a property,
by default it will be 1.0-dev-b (have a look at the default value for
module.version.target in the common build properties file). Each module build
by this common build file could easily override this by either setting a
different module.version.target in its module specific build.properties, or
even overriding module.version.prefix. To get the new revision Ivy scans the
repository to find the latest available version with the given prefix, and
increment this version by 1.
<h2>publish</h2>
<code type="xml">
-<target name="publish" depends="clean-build, new-version, jar"
description="--> publish this project in the ivy repository">
- <property name="revision" value="${version}"/>
+<target name="publish" depends="clean-build, jar" description="--> publish
this project in the ivy repository">
<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"
- resolver="shared"
- pubrevision="${revision}"
- status="release"
- />
- <echo message="project ${ant.project.name} released with version
${revision}" />
+ resolver="shared"
+ pubrevision="${version}"
+ status="release"
+ />
+ <echo message="project ${ant.project.name} released with version
${version}" />
</target>
</code>
-This target let publish the module in the shared repository, with the revision
found in the version property, which is set by other targets. It can be used
when a module reaches a specific milestone, or whenever you want the teeam to
benefit from a new version of the module.
+This target publishes the module in the shared repository, with the revision
found in the version property, which is set by other targets (based on
ivy-new-version we have seen above). It can be used when a module reaches a
specific milestone, or whenever you want the team to benefit from a new version
of the module.
<h2>publish-local</h2>
<code type="xml">
<target name="publish-local" depends="local-version, jar" description="-->
publish this project in the local ivy repository">
- <delete file="${build.dir}/ivy.xml"/> <!-- delete last produced ivy file
to be sure a new one will be generated -->
<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"
- resolver="local"
- pubrevision="${revision}"
- pubdate="${now}"
- status="integration"
- />
- <echo message="project ${ant.project.name} published locally with version
${revision}" />
+ resolver="local"
+ pubrevision="${version}"
+ pubdate="${now}"
+ status="integration"
+ forcedeliver="true"
+ />
+ <echo message="project ${ant.project.name} published locally with version
${version}" />
</target>
</code>
This is very similar to the publish task, except that this publish the
revision in the local repository, which is used only in your environment and
doesn't disturb the team. When you change something in a module and want to
benefit from the change in another one, you can simply call publish-local in
this module, and then your next build of the other module will automatically
get this local version.
<h2>clean-local</h2>
<code type="xml">
-<target name="clean-local" depends="configure" description="cleans the local
repository for the current module">
- <delete dir="${ivy.local.default.root}/${ant.project.name}"/>
+<target name="clean-local" description="--> cleans the local repository for
the current module">
+ <delete dir="${ivy.local.default.root}/${ant.project.name}"/>
</target>
</code>
-This target is used when you don't want to use your local version of a module
anymore, for example when you release a new version to the whole team.
+This target is used when you don't want to use your local version of a module
anymore, for example when you release a new version to the whole team, or
discard your local changes and want to take advantage of a new version from the
team.
<h2>report</h2>
<code type="xml">
<target name="report" depends="resolve" description="--> generates a report of
dependencies">
@@ -180,8 +191,26 @@
</code>
Generates both an html report and a graphml report.
-For example, to generate a graph like the one shown at the beginning of this
tutorial, you just have to follow the instructions given <a
href="../yed.html">here</a> with the graphml file you will find in
<code>projects/console/build/</code> after having called report in the console
project, and that's it, you have a clear overview of all your app dependencies !
- </textarea>
+For example, to generate a graph like the one shown at the beginning of this
tutorial, you just have to follow the instructions given [[yed here]] with the
graphml file you will find in <code>projects/console/build/</code> after having
called report in the console project, and that's it, you have a clear overview
of all your app dependencies !
+
+<h1>Playing with the projects</h1>
+To play with this tutorial you can use regular ant commands. Begin in the base
directory of the tutorial (src/example/multi-project), and run ant -p:
+<div class="shell"><pre>
+[<tutorial/log/multi-project-general-antp.txt>]
+</pre></div>
+
+This gives you an idea of what you can do here. To make sure you have at least
one version of all your modules published in your repository (required to build
modules having dependencies on the others), you can run ant publish-all
(example log <a href="log/multi-project-general-publishall.txt">here</a>).
+
+You will see that Ivy calls the publish target on all the modules, following
the order of the dependencies, so that a dependee is always built and published
before its depender. Feel free to make changes in the source code of a module
(changing a method name for instance) and in the module using the method, then
call publish-all to see how the change in the dependee is compiled first,
published, and then available to the depender which can compile successfully.
+
+Then you can go in one of the example project directory (like projects/find
for instance), and run ant -p:
+<div class="shell"><pre>
+[<tutorial/log/multi-project-find-antp.txt>]
+</pre></div>
+
+You can see the targets available, thanks to the import of the common.xml
build file. Pay with the project by calling resolve, publish, and see what
happens when you do the same in other projects. An interesting thing to do for
instance is to change the dependencies of a project: if the module version now
depends on a new commons library, you will see that all other projects
depending on version will get this library as part of their transitive
dependencies once the new revision of the version project is published. Very
easy! And if a project introduces a change with which the depender is
incompatible yet, you can very easily change the dependency in the depender to
move from latest.integration to a fixed version with which the depender is
compatible (probably the latest before the change). Keeping your modules under
control is now very easy!
+
+You should then be pretty familiar with multi project development with Ivy, we
hope you will appreciate its power and flexibility! And those tutorials are
only the beginning of your journey with Ivy, browse the [[reference reference
documentation]] to learn more about the features, subscribe to the
[[mailing-lists mailing lists]] to share your experience and ask questions with
the community, browse the source code, open jira issues, submit patches, join
in and help make Ivy the best dependency management tool!</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>