Author: xavier
Date: Sun Dec 2 07:56:22 2007
New Revision: 600318
URL: http://svn.apache.org/viewvc?rev=600318&view=rev
Log:
document new cache settings (IVY-628 and IVY-654)
Added:
incubator/ivy/core/trunk/doc/configuration/cache.html (with props)
incubator/ivy/core/trunk/doc/configuration/lock-strategies.html (with
props)
Modified:
incubator/ivy/core/trunk/doc/configuration.html
incubator/ivy/core/trunk/doc/configuration/conf.html
incubator/ivy/core/trunk/doc/extend.html
incubator/ivy/core/trunk/doc/toc.json
Modified: incubator/ivy/core/trunk/doc/configuration.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/configuration.html?rev=600318&r1=600317&r2=600318&view=diff
==============================================================================
--- incubator/ivy/core/trunk/doc/configuration.html (original)
+++ incubator/ivy/core/trunk/doc/configuration.html Sun Dec 2 07:56:22 2007
@@ -25,16 +25,16 @@
</head>
<body>
<textarea id="xooki-source">
-In order to work as you want, ivy sometimes need some settings. Actually, ivy
can work with no specific settings at all, see the <a
href="tutorial/defaultconf.html">default settings documentation</a> for details
about that. But ivy is able
-to work in very different contexts. You just have to configure it properly.
+In order to work as you want, ivy sometimes need some settings. Actually, ivy
can work with no specific settings at all, see the <a
href="tutorial/defaultconf.html">default settings documentation</a> for details
about that. But ivy is able to work in very different contexts. You just have
to configure it properly.
-Settings are specified through an xml file, usually called ivysettings.xml. To
configure ivy from ant, you just have to call the configure task and pass it
the path to your settings file (see <a href="use/configure.html">configure</a>
task documentation for details).
+Settings are specified through an xml file, usually called ivysettings.xml. To
configure ivy from ant, you just have to use the [[ant:settings]] datatype with
the path of your settings file.
Here is an example of settings file :
<code type="xml">
<ivysettings>
<properties file="${ivy.settings.dir}/ivysettings-file.properties" />
- <settings defaultCache="${cache.dir}" defaultResolver="ibiblio"
checkUpToDate="false" />
+ <settings defaultResolver="ibiblio" checkUpToDate="false" />
+ <cache basedir="${cache.dir}" />
<resolvers>
<ibiblio name="ibiblio" />
<filesystem name="internal">
@@ -73,6 +73,8 @@
<a href="configuration/include.html">include</a>
<a href="configuration/classpath.html">classpath</a>
<a href="configuration/typedef.html">typedef</a>
+ <a href="configuration/lock-strategies.html">lock-strategies</a>
+ <a href="configuration/cache.html">cache</a>
<a href="configuration/latest-strategies.html">latest-strategies</a>
<a href="configuration/version-matchers.html">version-matchers</a>
<a href="configuration/triggers.html">triggers</a>
@@ -121,6 +123,10 @@
<td>0..n</td></tr>
<tr><td><a href="configuration/typedef.html">typedef</a></td><td>defines
new types in ivy</td>
<td>0..n</td></tr>
+ <tr><td><a
href="configuration/lock-strategies.html">lock-strategies</a></td><td>defines
lock strategies</td>
+ <td>0..1</td></tr>
+ <tr><td><a href="configuration/cache.html">cache</a></td><td>set up the
cache</td>
+ <td>0..1</td></tr>
<tr><td><a
href="configuration/latest-strategies.html">latest-strategies</a></td><td>defines
latest strategies</td>
<td>0..1</td></tr>
<tr><td><a href="configuration/parsers.html">parsers</a></td><td>defines
module descriptor parsers</td>
Added: incubator/ivy/core/trunk/doc/configuration/cache.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/configuration/cache.html?rev=600318&view=auto
==============================================================================
--- incubator/ivy/core/trunk/doc/configuration/cache.html (added)
+++ incubator/ivy/core/trunk/doc/configuration/cache.html Sun Dec 2 07:56:22
2007
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html>
+<head>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+ <script type="text/javascript">var xookiConfig = {level: 1};</script>
+ <script type="text/javascript" src="../xooki/xooki.js"></script>
+</head>
+<body>
+ <textarea id="xooki-source">
+<b>Tag:</b> cache
+
+<span class="since">since 2.0</span> Configures the Ivy cache.
+
+Ivy cache is composed of two different parts:
+<ul>
+<li>the repository cache</li>
+The repository cache is where Ivy stores data downloaded from module
repositories, along with some meta information concerning these artifacts, like
their original location.
+This part of the cache can be shared if you use an ad hoc
[[configuration/lock-strategies lock strategy]].
+<li>the resolution cache</li>
+This part of the cache is used to store resolution data, which is used by Ivy
to reuse the results of a resolve process.
+This part of the cache is overwritten each time a new resolve is performed,
and should never be used by multiple processes at the same time.
+</ul>
+
+Here are some details on the available settings attributes:
+
+<em>basedir</em> is the base directory where the cache will be stored. All
other cache related paths are relative to this basedir.
+It usually points to a directory in the local filesystem.
+<strong>This should not point to a directory used as a repository!</strong>
+
+Once the settings are loaded, the value of the defaultCache (either configured
or the default value) is stored in an Ivy variable: ivy.cache.dir.
+
+<em>repositoryDir</em> and <em>resolutionDir</em> are used to configure the
base location of the repository and resolution parts of the cache.
+
+<em>repositoryIvyPattern</em> and <em>repositoryArtifactPattern</em> are used
to configure the way Ivy stores ivy files and artifacts in the cache. Usually
you do not have to change this, unless you want to use the cache directly from
another tool, which is not recommended. These patterns are relative to the
repository cache root.
+
+<em>lockStrategy</em> is used to define the lock strategy to use when
accessing the repository cache.
+
+<h1>Attributes</h1>
+<table class="ivy-attributes">
+<thead>
+ <tr><th class="ivy-att">Attribute</th><th
class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
+</thead>
+<tbody>
+ <tr><td>basedir</td><td>a path to a directory to use as base directory for
the cache.</td>
+ <td>No, defaults to .ivy2/cache in user home</td></tr>
+ <tr><td>resolutionDir</td><td>the path of the directory to use to put all
resolution cache data</td>
+ <td>No, defaults to empty string (ie cache basedir)</td></tr>
+ <tr><td>repositoryDir</td><td>the path of the directory to use to put all
repository cache data</td>
+ <td>No, defaults to empty string (ie cache basedir)</td></tr>
+ <tr><td>repositoryIvyPattern</td><td>a pattern to indicate where ivy files
should be put in the repository cache</td>
+ <td>No, defaults to
[organisation]/[module]/ivy-[revision].xml</td></tr>
+ <tr><td>repositoryArtifactPattern</td><td>a pattern to indicate where
artifact files should be put in repository cache</td>
+ <td>No, defaults to
[organisation]/[module]/[type]s/[artifact]-[revision].[ext]</td></tr>
+ <tr><td>lockStragegy</td><td>the name of the
[[configuration/lock-strategies]] lock strategy to use when accessing the
cache</td>
+ <td>No, defaults to <em>no-lock</em></td></tr>
+</tbody>
+</table>
+<h1>Example</h1>
+<code type="xml">
+<cache basedir="mycache"
+ resolutionDir="resolution"
+ repositoryDir="repository"
+ repositoryIvyPattern="[module]/ivys/ivy-[revision].xml"
+
repositoryArtifactPattern="[module]/[type]s/[artifact]-[revision].[ext]"
+ lockStrategy="artifact-lock"
+/>
+</code>
+</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>
Propchange: incubator/ivy/core/trunk/doc/configuration/cache.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ivy/core/trunk/doc/configuration/conf.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/configuration/conf.html?rev=600318&r1=600317&r2=600318&view=diff
==============================================================================
--- incubator/ivy/core/trunk/doc/configuration/conf.html (original)
+++ incubator/ivy/core/trunk/doc/configuration/conf.html Sun Dec 2 07:56:22
2007
@@ -31,6 +31,8 @@
Default cache is used whenever a cache is not provided. It usually points to a
directory in your filesystem. <strong>This should not point to a directory used
as a repository!</strong>
<span class="since">Since 2.0</span> Once the settings are loaded, the value
of the defaultCache (either configured or the default value) is stored in an
Ivy variable: ivy.cache.dir.
+<span class="since">Since 2.0</span> A new [[configuration/cache]] tag is
provided where you can fully configure the cache. As of 2.0 beta 1, we
recommend using the cache tag even though configuring using the attributes
available on this tag is still possible.
+
Default resolver is used whenever nothing else is configured in the modules
section of the configuration file. It should give the name of a dependency
resolver defined in the resolvers section of the configuration file.
@@ -44,14 +46,13 @@
checkUpToDate indicates to ivy if it must check date of artifacts before
retrieving them (i.e. copying them from
cache to another place in your filesystem). Usually it is a good thing to
check date to avoid unnecessary copy, even if it's most of the time a local
copy.
-cacheIvyPattern and cacheArtifactPattern are used to configure the way ivy
stores ivy files and artifacts in the cache. Usually you do not have to change
this, unless you want to use the cache directly from another tool, which is not
recommended.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th
class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
- <tr><td>defaultCache</td><td>a path to a directory to use as default
cache</td>
+ <tr><td>defaultCache</td><td>a path to a directory to use as default
cache. <i>We recommend using the basedir on the [[configuration/cache]] tag
instead</i></td>
<td>No, defaults to .ivy2/cache in user home</td></tr>
<tr><td>defaultResolver</td><td>the name of the default resolver to
use</td>
<td>No, but all modules should be configured in the modules section if
not provided</td></tr>
@@ -67,9 +68,9 @@
<td>No, defaults to true</td></tr>
<tr><td>checkUpToDate</td><td>Indicates if date should be checked before
retrieving artifacts from cache</td>
<td>No, defaults to true</td></tr>
- <tr><td>cacheIvyPattern</td><td>a pattern to indicate where ivy files
should be put in cache</td>
+ <tr><td>cacheIvyPattern</td><td>a pattern to indicate where ivy files
should be put in cache. <i>We recommend using the repositoryIvyPattern on the
[[configuration/cache]] tag instead</i></td>
<td>No, defaults to
[organisation]/[module]/ivy-[revision].xml</td></tr>
- <tr><td>cacheArtifactPattern</td><td>a pattern to indicate where artifact
files should be put in cache</td>
+ <tr><td>cacheArtifactPattern</td><td>a pattern to indicate where artifact
files should be put in cache. <i>We recommend using the
repositoryArtifactPattern on the [[configuration/cache]] tag instead</i></td>
<td>No, defaults to
[organisation]/[module]/[type]s/[artifact]-[revision].[ext]</td></tr>
<tr><td>useRemoteConfig</td><td>true to configure ivyrep and ibiblio
resolver from a remote configuration file (updated with changes in those
repository structure if any) (<span class="since">since 1.2</span>)</td>
<td>No, defaults to false</td></tr>
Added: incubator/ivy/core/trunk/doc/configuration/lock-strategies.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/configuration/lock-strategies.html?rev=600318&view=auto
==============================================================================
--- incubator/ivy/core/trunk/doc/configuration/lock-strategies.html (added)
+++ incubator/ivy/core/trunk/doc/configuration/lock-strategies.html Sun Dec 2
07:56:22 2007
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html>
+<head>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+ <script type="text/javascript">var xookiConfig = {level: 1};</script>
+ <script type="text/javascript" src="../xooki/xooki.js"></script>
+</head>
+<body>
+ <textarea id="xooki-source">
+<b>Tag:</b> lock-strategies <span class="since">since 2.0</span>
+
+Defines a list of lock strategies usable in Ivy.
+
+A lock strategy is used by a cache manager to decide when and how locking
should be performed (see [[configuration/cache]] to see how to configure the
lock strategy to use).
+
+Two lock strategies are registered by default:
+<ul>
+<li><b>no-lock</b></li> This lock strategy actually performs no locking at
all, and thus should not be used in environment where the cache is shared by
multiple processes.
+
+This strategy is implemented by
([[svn:src/java/org/apache/ivy/plugins/lock/NoLockStrategy.java
NoLockStrategy]])
+
+
+<li><b>artifact-lock</b></li> This strategy acquire a lock whenever a module
descriptor or an artifact is downloaded to the cache, which makes a good
solution when you want to share your repository cache.
+
+Note that this strategy is based on file locking, performed by default using
the java.io.File.createNewFile() atomicity (which is documented as atomic in
the javadoc, but not recommended to perform locks). A java.nio.FileLock based
implementation is also provided, but according to our tests the createNewFile
based one performs better and more reliably. We heavily recommend making your
own testing in your target environment before relying on this lock strategy for
heavily concurrent operations.
+
+This strategy is implemented by
([[svn:src/java/org/apache/ivy/plugins/lock/ArtifactLockStrategy.java
ArtifactLockStrategy]])
+</ul>
+
+The child tag used for the lock strategy must be equal to a name of a lock
strategy type (added with the typedef tag).
+
+<h1>Child elements</h1>
+<table class="ivy-children">
+<thead>
+ <tr><th class="ivy-chld">Element</th><th
class="ivy-chld-desc">Description</th><th
class="ivy-chld-card">Cardinality</th></tr>
+</thead>
+<tbody>
+ <tr><td>any lock strategy</td><td>adds a lock strategy to the list of
available ones</td>
+ <td>0..n</td></tr>
+</tbody>
+</table></textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>
Propchange: incubator/ivy/core/trunk/doc/configuration/lock-strategies.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ivy/core/trunk/doc/extend.html
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/extend.html?rev=600318&r1=600317&r2=600318&view=diff
==============================================================================
--- incubator/ivy/core/trunk/doc/extend.html (original)
+++ incubator/ivy/core/trunk/doc/extend.html Sun Dec 2 07:56:22 2007
@@ -25,41 +25,30 @@
</head>
<body>
<textarea id="xooki-source">
-Many things are configurable in ivy, and many things are available with ivy
core. But when you want to do
-something not built in ivy core, you can still plug your own code.<br/><br/>
+Many things are configurable in Ivy, and many things are available with Ivy
core. But when you want to do something not built in ivy core, you can still
plug your own code.
-Several things are pluggable in ivy:
+Many things are pluggable in Ivy:
<ul>
<li>module descriptor parsers</li>
<li>dependency resolvers</li>
+<li>lock strategies</li>
<li>latest strategies</li>
+<li>circular dependency strategies</li>
<li>conflict managers</li>
<li>report outputters</li>
<li>version matchers</li>
<li>triggers</li>
</ul>
-Before trying to implement your own, we encourage you to check if the solution
to your problem cannot be
-addressed by existing features, or by [[links contributed ones]]. Do not
hesitate to ask for help on the [[mailing-lists]].<br/><br/>
+Before trying to implement your own, we encourage you to check if the solution
to your problem cannot be addressed by existing features, or by [[links
contributed ones]]. Do not hesitate to ask for help on the [[mailing-lists]].
-If you still don't find what you need, then you'll have to develop your own
plugin or find someone who could do that for you.<br/><br/>
+If you still don't find what you need, then you'll have to develop your own
plugin or find someone who could do that for you.
-Here are the main things to know if you want to develop your own
plugins...<br/><br/>
+All ivy plug-ins use the same code patterns as ant specific tasks for
parameters. This means that if you want to have a "myattribute" of type String,
you just have to declare a method called setMyattribute(String val) on your
plug-in. The same applies to child tags, you just have to follow Ant
specifications.
-All ivy plug-ins use the same code patterns as ant specific tasks for
parameters. This means that
-if you want to have a "myattribute" of type String, you just have to declare a
method called
-setMyattribute(String val) on your plug-in. The same applies to child tags,
you just have to follow ant specifications.<br/><br/>
-
-Knowing that, you then have to implement the appropriate interface:
-<ul>
-<li>org.apache.ivy.DependencyResolver for dependency resolvers</li>
-<li>org.apache.ivy.LatestStrategy for latest strategies</li>
-<li>org.apache.ivy.ConflictManager for conflict managers</li>
-<li>org.apache.ivy.parser.ModuleDescriptorParser for module descriptor
parsers</li>
-</ul>
-
-To help you understand what is required in each implementation, and what you
can use to do it, have a look to existing implementations, it's the best advice
we can give you!
+All pluggable code in Ivy is located in the
[[svn:src/java/org/apache/ivy/plugins org.apache.ivy.plugins]] package. In each
package you will find an interface that you must implement to provide a new
plugin. We usually also provide an abstract class easing the implementation and
making your code more independent of interface changes. We heavily recommend
using these abstract classes as a base class.
+To understand how your implementation can be done, we suggest looking at
existing implementations we provide, it's the best way to get started.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
Modified: incubator/ivy/core/trunk/doc/toc.json
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/toc.json?rev=600318&r1=600317&r2=600318&view=diff
==============================================================================
--- incubator/ivy/core/trunk/doc/toc.json (original)
+++ incubator/ivy/core/trunk/doc/toc.json Sun Dec 2 07:56:22 2007
@@ -193,6 +193,20 @@
]
},
{
+ "id":"configuration/lock-strategies",
+ "title":"lock-strategies",
+ "children": [
+
+ ]
+ },
+ {
+ "id":"configuration/cache",
+ "title":"cache",
+ "children": [
+
+ ]
+ },
+ {
"id":"configuration/latest-strategies",
"title":"latest-strategies",
"children": [