Return-Path: X-Original-To: apmail-ant-notifications-archive@minotaur.apache.org Delivered-To: apmail-ant-notifications-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C2B239E66 for ; Fri, 6 Apr 2012 09:04:13 +0000 (UTC) Received: (qmail 69431 invoked by uid 500); 6 Apr 2012 09:04:13 -0000 Delivered-To: apmail-ant-notifications-archive@ant.apache.org Received: (qmail 69363 invoked by uid 500); 6 Apr 2012 09:04:12 -0000 Mailing-List: contact notifications-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ant.apache.org Delivered-To: mailing list notifications@ant.apache.org Received: (qmail 69249 invoked by uid 99); 6 Apr 2012 09:04:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Apr 2012 09:04:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_FRT_BELOW2 X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Apr 2012 09:03:44 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id D4B0F2388865 for ; Fri, 6 Apr 2012 09:03:20 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1310248 [2/15] - in /ant/site/ivyde/production: ./ history/2.2.0.beta1/ history/2.2.0.beta1/cpc/ history/2.2.0.beta1/dev/ history/2.2.0.beta1/images/ history/2.2.0.beta1/js/ history/2.2.0.beta1/sample/ history/2.2.0.beta1/style/ history/la... Date: Fri, 06 Apr 2012 09:03:06 -0000 To: notifications@ant.apache.org From: hibou@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120406090320.D4B0F2388865@eris.apache.org> Added: ant/site/ivyde/production/history/2.2.0.beta1/book.html URL: http://svn.apache.org/viewvc/ant/site/ivyde/production/history/2.2.0.beta1/book.html?rev=1310248&view=auto ============================================================================== --- ant/site/ivyde/production/history/2.2.0.beta1/book.html (added) +++ ant/site/ivyde/production/history/2.2.0.beta1/book.html Fri Apr 6 09:02:59 2012 @@ -0,0 +1,796 @@ + + + + + + + + +Documentation (2.2.0.beta1) | Apache IvyDE™ + + + + + + + +
+ + + + + + + + + +
+
Documentation (2.2.0.beta1)

Apache IvyDE Eclipse plugin integrates Apache Ivy's dependency management into Eclipse™. It lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management.

A summary of the features it provides follows: +
    +
  • Managed classpath container: automatic downloads, access to the Ivy "resolve" task from your IDE, and a feature allowing you to develop interdependent multi-module applications in one workspace.
  • +
  • Ivy XML files editor: creation wizard, html preview and completion for Ivy XML tags, attributes, and attribute values.
  • +
  • Ivy settings files editor: completion for XML tags, attributes, and attribute values.
  • +
  • Ivy console: presents every log from Ivy to assist in debugging a failing resolve.
  • +
  • Reverse Dependency Explorer: helps you work with conflicting dependencies amongst several projects.
  • +
  • Resolve and retrieve for non Java project: use Ivy within Eclipse to manage files non necessarly Java-related
  • +
+ +Apache IvyDE can be also used with other plugins like WTP and Apache Ant.


Release Notes

    +
  1. Release Annoucement
  2. +
  3. What is Apache IvyDE?
  4. +
  5. Status of this release
  6. +
  7. Major Changes in this Release
  8. +
  9. Committers and Contributors for this Release
  10. +
  11. List of Changes in this Release
  12. +
+ +

Release Annoucement

+ + +The Apache IvyDE project is pleased to announce its 2.2.0 beta1 release.

The Apache IvyDE Eclipse plugin integrates Apache Ivy's dependency management into Eclipse. It lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management. Apache IvyDE will contribute to the classpath of your Java project or you can make it retrieve your dependencies directly into your project. Last but not least Apache IvyDE offer editors of ivy.xml and ivysettings.xml files with completion. Get some preview here: http://ant.apache.org/ivy/ivyde/screenshots.html

Major changes in this release:
* a synchronous resolve job has been introduced to take into account projet's inter dependencies and avoid too many workspace build,
* resolved classpath can now be based on retrieved artifacts,
* IvyDE retrieve feature can now be use on non Java projets

Compatibility:
* this release is expected to work with every version of Ivy 2.1 or superior
* as for this release and the next ones, IvyDE now expects to be installed in Eclipse 3.4 or superior.
* the Eclipse updatesite has been upgrade and now only supports Eclipse 3.5 or superior. Eclipse 3.4 users can still install it manually.

This release is considered as beta since the important changes in IvyDE resolve feature. We encourage our early users to test it and report us any issue they found.

A more detailed release notes can be read there:
h ttp://ant.apache.org/ivy/ivyde/history/latest-milestone/release-notes.html

Issues should be reported to:
https://issues.apache.org/jira/browse/IVYDE

Download the 2.2.0 beta1 release at:
http://ant.apache.org/ivy/ivyde/download.cgi

Or use directly the Apache IvyDE's updatesite:
http://www.apache.org/dist/ant/ivyde/updatesite

More information can be found on the Apache IvyDE website:
http://ant.apache.org/ivy/ivyde/
+ +

What is Apache IvyDE?

+ +Apache IvyDE is the Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse™.

Apache IvyDE lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management. Apache IvyDE will contribute to the classpath of your Java project or you can make it retrieve your dependencies directly into your project. Last but not least Apache IvyDE offer editors of ivy.xml and ivysettings.xml files with completion. Get some preview here: http://ant.apache.org/ivy/ivyde/screenshots.html.

Status of this release

+ +This release contains sevral major improvements along with some bug fixes. The major
improvements are about the resolve scheduler and how retrieved artifact are handled.
Thus this release is considered as a beta one.

Major Changes in this Release

+ +As for this release and the next ones, Apache IvyDE now expects to be installed in Eclipse 3.4 or superior.

Apache IvyDE has now a synchronous job to launch resolve of dependencies on the projets. So
IvyDE will be able to order the resolve of the projects in the correct order regarding
their inter dependencies. And the immediate effect is that Eclipse get notified only
one time of a classpath change, and thus triggerin only one wrokspace build.

Apache IvyDE is now capable of having a classpath based on retrieved artifact rather than
on the cached ones.

The existing retrieve configuration are now considered "standonale" ones, as they
are independant of the classpath container. They can even now be part of non Java
project.

Committers and Contributors for this Release

+ +Here is the list of people who have contributed source code and documentation
to this release. Many thanks to all of them, and also to the whole IvyDE community
contributing ideas and feedback, and promoting the use of Apache IvyDE. The list would be too
long, but Apache IvyDE couldn't be what it is without you!
+
    Committers +
  • Maarten Coene
  • +
  • Xavier Hanin
  • +
  • Nicolas Lalevée
  • +
  • Jon Schneider
  • +
  • Gilles Scokart
  • +
+
    Contributors: +
  • Clint Burghduff
  • +
  • Gregory Fernandez
  • +
  • Jeffrey M. Metcalf
  • +
+ +

List of Changes in this Release

+ +List of changes since Apache IvyDE 2.1.0: +
    +
  • NEW: Custom color in XML editors (IVYDE-73)
  • +
  • NEW: support for retrieve configuration in non Java project
  • +
  • NEW: an IvyDE classpath can now be retrieved (IVYDE-56)
  • +
  • NEW: Add branch comparison to workspace resolver (IVYDE-234) (thanks to Jeffrey M. Metcalf)
  • +
  • NEW: Look for ivysettings.xml file in project root copying the behavior of ivy ant task (IVYDE-258)
  • +
  • NEW: IvyDE can now resolve in an offline mode, where Ivy use only the caches (Ivy 2.3 required)
  • +
  • NEW: Explicit ordering of configurations (IVYDE-159)
  • +
  • NEW: Open the ivy file on the double click in the reverse dependency explorer
  • +
  • NEW: The ivysettings field editor now supports the variable ${ivyproject_loc} which is referencing the current project being resolved (IVYDE-247)
  • +
  • NEW: Resolve error popups can now be avoided (IVYDE-268)
  • +
  • NEW: Add configuration option to use an extended revision id when resolving eclipse projects (IVYDE-235) (thanks to Jeffrey M. Metcalf)
  • +
  • NEW: Allow specifying source and javadoc mapping on binaries directly in the ivy.xml (IVYDE-267)
  • +
  • NEW: Ivy Resolve Visualizer (IVYDE-208)
  • +
  • NEW: "clean caches" operations have now a confirm popup (IVYDE-289)
  • +
    +
  • IMPROVE: let IvyDE refresh workspace after a resolve (IVYDE-27) (thanks to Clint Burghduff)
  • +
  • IMPROVE: IvyDE now resolve by batch, then preventing too many workspace build (IVYDE-177)
  • +
  • IMPROVE: Shared Javadoc/Source attachments (IVYDE-230) (thanks to Gregory Fernandez)
  • +
  • IMPROVE: WorkspaceResolver: deal with self-dependencies (IVYDE-240)
  • +
  • IMPROVE: Impossible to resolve dependencies: missing diagnostics (IVYDE-233)
  • +
    +
  • FIX: Variable based path for ivysettings doesn't work it there are some spaces in the path (IVYDE-253)
  • +
  • FIX: Triggers are not called (IVYDE-244)
  • +
  • FIX: Missing ivysettings.xml can make the classpath container config to change (IVYDE-248)
  • +
  • FIX: Multiple eclipse projects with similar ivy library definitions results in launch config source path collisions (IVYDE-237)
  • +
  • FIX: NPE when starting the IvyPlugin (IVYDE-269)
  • +
  • FIX: IvyDE deletes entirely a project if the retrieve pattern resolved to be the root of the project (IVYDE-272)
  • +
  • FIX: java.lang.StackOverflowError on Ivy>Resolve of a pom.xml with a parent and the workspace resolver (IVYDE-273)
  • +
  • FIX: ivy.xsd bundled with IvyDE appears to be incorrect (IVYDE-297)
  • +
+ +Most of our changes are logged in our JIRA, where you can find comments and links to our subversion:
https://issues.apache.org/jira/browse/ivyde


License

Compatibility

Upgrading/Downgrading

+ +This version is compatible with every earlier Apache release (since 2.0.0.alpha1). Any upgrade of Apache IvyDE should work without any worries.

The reverse is not true, downgrading is not supported and may break your configuration.

Dependency on Apache Ivy

+ +Apache IvyDE expects to be used with a version 2.1 or superior of Apache Ivy.

Eclipse™ integration

+ +Apache IvyDE has been maintained to be compatible with Eclipse 3.4, 3.5, 3.6 and 3.7.

JVM compability

+ +Apache IvyDE has been kept compatible with Java 1.4.


Installation

Install the last release via Internet

+ +For most user who have access to the internet it is simpler to install the latest release from the Apache IvyDE updatesite. So just look out there:
http://ant.apache.org/ivy/ivyde/download.cgi

Manual install

+ +

Install Apache IvyDE

+ +So you should have the zip distribution of Apache IvyDE in which you should find these files: +
    +
  • features/org.apache.ivyde.feature_2.1.0.XXXX.jar
  • +
  • plugins/org.apache.ivyde.eclipse_2.1.0.XXXX.jar
  • +
+ +You can then install them by copying them respectively in the $ECLIPSE_HOME/features and the $ECLIPSE_HOME/plugins: +
+cp features/* $ECLIPSE_HOME/features
cp plugins/* $ECLIPSE_HOME/plugins +
+ +

Install the latest Apache Ivy bundle

+ +Get the latest Apache Ivy feature and bundle for the updatesite: + + +And then just copy them respectively in the $ECLIPSE_HOME/features and the $ECLIPSE_HOME/plugins folders.

Restart Eclipse

+ +After installing manually your plugins, you have to restart your Eclipse to have it take into account the changes. It is recommended to restart it with the -clean option on the command line.


Classpath Container

The IvyDE classpath container will help you manage the classpath of your Java™ Eclipse™ projects, based on the dependencies declared in Ivy files found in your projects.

Some of the tasks that can be performed on the container include: +
    +
  • Create a container
  • +
  • Edit its setup
  • +
  • Launch a resolve of the dependencies
  • +
  • Retrieve the dependencies in your project
  • +
  • Resolve dependencies within the Eclipse workspace
  • +
  • Launch software or unit tests with a classpath managed by IvyDE
  • +
  • Use IvyDE with maven pom.xml
  • +
  • Use IvyDE in concert with WTP
  • +
+
Create a container

First, locate an ivy.xml file or a maven pom.xml ready to be used to build a classpath. Also, if necessary, locate a supporting ivysettings.xml.

Fast creation

+For most of the projects, the ivy.xml file (or the pom.xml) is in the java project. So you can just right click on the ivy.xml and select "Add Ivy Library..." and you can directly access the prefilled setup of the IvyDE classpath container

+ +

Standard creation

+The standard way to add the IvyDE classpath container is to manipulate the Eclipse™'s "Build Path": +
    +
  • Select the project in which you want to create an IvyDE classpath container and open the "Add Libraries" form of Eclipse (in package Explorer, in the context menu of your project choose : [Build Path]/[Add Libraries]).



  • +
  • Select the "IvyDE Managed Dependencies" item.



  • +
  • Select an ivy.xml file or a maven pom.xml and the desired configurations.



  • +
+
  • You then might want to use specific settings for your project, a configuration different from the global one. Click on the "Enable project specific settings" check box. For additional configuration options, see the documentation about Eclipse variables.

  • +Now your classpath is set and you can see all dependencies in one unique folder of the package explorer (folder name = ivy-file-name[conf1,conf2]).


    + + +
    Edit the classpath

    During the life of your project, you can change the ivy.xml file or maven pom.xml and change its configuration.

    These properties can be accessed by the context menu of the IvyDE classpath container:

    + +You can also edit it via the build path configuration. Open the build path configuration dialog, select the "Libraries" panel and select the IvyDE classpath container. Then click on the "Edit" button: the IvyDE classpath container configuration dialog will pop up.
    This is particularly useful when Eclipse hides the empty classpath containers (since Eclipse 3.3). When the container is empty, this is the only way to trigger a resolve on this project.


    +
    +
    +
    Launching resolve

    You can explicitly ask for Ivy dependency resolution from your classpath container.

    This command will invoke the "resolve" Ivy task and update your classpath container.

    There is also a "refresh" action: this action is similar to the resolve one, but does not perform a full resolve if a report already exists in the cache. This is particularly useful if you work with Apache Ant and a command line so that you avoid two full resolves. It is also the default action performed on classpath containers when the Eclipse workspace is opened (Windows > Preferences > Ivy), in effect restoring the classpath container to its state prior to the last closing of the workspace if no other action is performed against the ivy.xml in the meantime.

    And there is a "reload settings " action: by default IvyDE does reload ivy settings files each time a resolve it required. But in case the ivy settings file is remote, this take make the user experience quite slow. To work around that, you can check in the preference page the option to only load on demand, and use the "reload settings" action in the context menu.


    + +You can also trigger a resolve (not a refresh!) of every IvyDE classpath container in the workspace via the button in the tool bar of Eclipse.


    + +And to launch a resolve on a specified selection of projects: +
      +
    • Select the projects you want to resolve in the package view,
    • +
    • Open the context menu with a right click
    • +
    • Choose Ivy > Resolve
    • +
    + +

    + +
    Retrieve dependencies

    It is possible to make the classpath container be composed of a retrieved dependencies. Instead of having the container point to the jars in Ivy's cache, jars can be retrieved in the project with a specified pattern and have the container be composed of them.

    To enable this behavior, enter the classpath container configuration panel, select the third tab "Classpath" and select "retrieved artifacts".

    + +The Retrieve pattern specifies the location where the dependencies should be copied relative to the containing project.

    The Delete old retrieved artifacts check box will cause IvyDE to clean the output directory before each retrieve. Note that any other artifacts other than those previously retrieved by IvyDE in this container will be deleted as well if this option is selected.

    Finally, you can select which Types of artifacts should actually be retrieved (* means all).


    Jar mapping

    Apache IvyDE will resolve the dependencies and artifacts you are requiring. Then with the pool of resolved artifacts, it has to decide which is a binary jar, which contains sources, and which contains javadocs. And also how to bind one on each other.

    Finding jars types

    + +There are three types of jars handled by Eclipse": +
      +
    • the binary jars: they will be added to the classpath in oder to compile and run; they contain the .class files.
    • +
    • the source jars/zip: they will be bound to the binary one to browse dependency sources; they are basically a zip of .java files
    • +
    • the javadoc jars/zip: they will be bound to the binary one to browse the API documentation of the dependencies of your project; they are a zip of .html files respectively in a layout produced by javadoc.
    • +
    + +To find the binary jars, Apache IvyDE is relying on the "Accepted types" preference field you can find in the container configuration panel, or in the global one. If the artifact has a type listed here, it is then added to the classpath.

    For the sources, it is relying on the "Sources types".

    For the javadocs, it is relying on the "Javadocs types".

    Binding the jars

    + +

    Alorithm

    + +The second step is to bind a source artifact with a binary one. IvyDE has the following algorithm: +
      +
    • first, it looks up for a specified name in the ivy.xml via the "ivyde" namespace (see bellow)
    • +
    • next, if a binary jar has the same artifact name than a source one, there are bound together.
    • +
    • if none matched, then IvyDE search for sources which have one of the suffix specified in "Sources suffixes".
    • +
    + +

    The IvyDE namespace

    + +In the ivy.xml file in your repository, you can specifically bind a binary artifact to a source one and to a javadoc one, so IvyDE knows for sure which bind to the other.

    In the artifact element, you can specify: +
      +
    • ivyde:source="my-source-artifact-name" which specify the artifact name of the source to bind to the current binary one
    • +
    • ivyde:javadoc="my-javadoc-artifact-name" which specify the artifact name of the javadoc to bind to the current binary one
    • +
    + +

    Exemples

    + +For instance, searching for the sources of mylib.jar (type=jar), with the default value of "Sources suffixes" ("-source,-sources,-src"), IvyDE will look to bind it to the first one existing of: +
      +
    • mylib.jar (type=source)
    • +
    • mylib-source.jar (type=source)
    • +
    • mylib-sources.jar (type=source)
    • +
    • mylib-src.jar (type=source)
    • +
    + +Note that Apache IvyDE don't care about the extension, it can be .zip too.

    Same apply for javadocs with respectively "Javadocs suffixes".


    + +With the IvyDE namespace, having the ivy.xml file: +
    +<ivy-module version="2.0" xmlns:ivyde="http://ant.apache.org/ivy/ivyde/ns/">
    <info organisation="com.acme" module="mylib" />
    <publications>
    <artifact name="mylib" type="jar" ext="jar" ivyde:source="the-sources-of-mylib" ivyde:javadoc="the-javadoc-of-mylib" />
    <artifact name="the-sources-of-mylib" type="source" ext="jar" />
    <artifact name="the-javadoc-of-mylib" type="javadoc" ext="jar" />
    </publications>
    </ivy-module> +
    + +Without furether setup in IvyDE preferences pages, IvyDE will bind: +
      +
    • the jar the-sources-of-mylib as sources of the jar mylib
    • +
    • the jar the-javadoc-of-mylib as javadoc of the jar mylib
    • +

    Clean the caches

    Apache IvyDE has the ability to clean the various types of Ivy caches.

    On a configured IvyDE classpath container, open the context menu: a list a different clean cache action are available.
    +
      +
    • Clean all caches: will clean every cache
    • +
    • Clean the resolution cache: will clean only the cache of the resolution reports
    • +
    • Clean every repository cache: will clean every cache dedicated to the artifacts
    • +
    • Clean the cache 'xxxxxx': will clean only the cache with the specified name
    • +
    + +

    Resolve in workspace

    Some projects are composed of mulpliple modules. Often, these modules have dependencies between them, dependencies managed by Apache Ivy (of course!).

    Eclipse is capable of calculating the workspace's build order according to dependencies between projects. To leverage this advantage, Apache IvyDE has the ability to add a project reference to a dependency located in the workspace in place of downloading its published artifact(s) from the repository. In this way, developers can develop multi-module applications, and test the interaction between these modules, before building and publishing artifacts to the repository.

    Consider a multi-module application with a considerable amount of code in each of several projects. Many developers have experienced th e delays involved in waiting for Eclipse™ to build code across all of these projects even though development is only being conducted in one isolated part of the application (maybe just one or two projects). If the latest published artifact in the Ivy repository has the same source code as a module that the developer is not currently working on, simply closing that project in the Eclipse workspace and resolving dependencies on dependent projects that would resolve that artifact speeds the compilation process considerably.

    First, each application module should be separate a project in Eclipse, and each of these projects should have a configured IvyDE classpath container.

    To enable resolution in the workspace, go to the "classpath" panel of the classpath container and select Resolve dependencies in workspace.

    + +Important notes: to make the resolve in workspace work correctly the info in the ivy.xml should be properly set: +
      +
    • The org and name
    • +
    • If there is a rev specified, dependencies should specify the appropriate range
    • +
    • If there is no rev specified, only dependencies with lastest will match
    • +
    • The status should match the required one: a dependency with latest.integration will only match if there is status="interation" in the info of the dependant module
    • +
    + +Having two projects "A" and "B" configured to use IvyDE and the workspace resolver, here is the expected resolved dependencies:
    + + + + + + + + + + + + +
    A dependency on BB declared revisionresult
    latest.integration1.2B wired on A
    1.21.2B wired on A
    [1.2,1.3)1.2B wired on A
    1.01.2no project wiring
    latest.integrationnoneB wired on A
    1.2noneB wired on A
    [1.2,1.3)noneB wired on A
    latest.integration$versionno project wiring
    1.2$versionno project wiring
    [1.2,1.3)$versionno project wiring
    + +In some setup, if you want to mix some resolver of your own and the workspace resolver, and still want the transitive dependencies work nicely between them, you may want to turn the resolve mode to dynamic: +
      +
    • see the defaultResolveMode attribute of settings in the ivysettings.
    • +
    • see the resolveMode attribute of module in the ivysettings.
    • +
    + +

    WTP support

    + +Note that WTP doesn't support IvyDE's workspace resolver. See the details in the page dedicated to WTP integration.


    Launch configuration

    The IvyDE classpath container can also be used in the launch configuration, run or debug.

    Default behavior

    + +By default, the container will be used because it is included in the default classpath of you project. This is the configuration that you implicitly have when you do a "Run As..." on a Java class. The container you see in the launch classpath is the same as the one you have in your project in the package explorer.

    + +Launching with the default the compile classpath might not be appropriate for some situations. For example, you may have additional libraries included in the container under a configuration intended to support unit testing but that may cause some instability in the runtime application.

    Managing the classpath manually

    + +When you do need to have finer-grained control over which configurations are visible to the runtime classpath, it is possible to edit the runtime classpath manually.

    By creating a launch configuration, you will get the default classpath as described above. So the first step is to remove it. Most likely, you will want to re-add your project in the user entries. Then to add an IvyDE container, choose "Advanced":

    + +Choose "Add Library":

    + +Choose "IvyDE Managed dependencies":

    + +Select the absolute path to your ivy.xml and select the proper configurations:

    + +Note: in the launch configuration it is not possible to edit or launch a resolve manually on the container you are creating. But it is possible to launch a resolve before each launch. It is recommended to do so if the resolve process is not too long. Otherwise you will have to recreate the container each time you change something in the ivy.xml for instance.

    To enable the resolve before each launch, go into the "Advanced" tab and select "Resolve before launch".

    + +Click "Finish" and see the result:

    + + +
    Use with maven poms

    If you want to use a Apache Maven™ pom.xml instead of an ivy.xml file, you can select a pom file in the configuration options of the IvyDE classpath.

    When a maven pom is selected, the configurations list is updated with all maven scopes.

    Both examples below are a good illustration of the simplicity of using maven poms in Apache IvyDE: + + +

    Maven1 Sample

    + +This sample presents a simple use case involving a maven pom and the IvyDE classpath container. We are going to create an Eclipse™ project on commons-httpclient sources.

    - Download the commons httpclient sources

    - Unzip this file (c:/tmp/commons-httpclient/)

    - Create a new Eclipse java project based on the unzipped sources (c:/tmp/commons-httpclient/)

    +
    +Note: your project willnot compile: some imports cannot be resolved.
    + + - Add a new classpath container based on the "project.xml" pom and select "default" configuration (maven scope)

    + +
    + + - Finished. The project compiles!

    + +
    + + +

    Maven2 Sample

    + +This sample demonstrates how the IvyDE classpath container on a Apache Maven 2 pom can handle transitive dependencies.

    - Create a new empty java project in Eclipse.

    - In your project, create an ivysettings.xml file:
    +
    <ivysettings>
    <conf defaultResolver="ibiblio"/>
    <resolvers>
    <ibiblio name="ibiblio" />
    </resolvers>
    </ivysettings> +
    + +Using the m2compatible attribute, you can benefit from Apache Maven 2 repository compatibility.

    - In your project, create a pom.xml file:
    +
    +<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
    <dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.0</version>
    </dependency>
    </dependencies>
    </project> +
    + + - On the pom.xml file, open the context menu and click on "Add Ivy Library...":

    - Select the configurations compile and runtime

    + +
    + + - click "Finish"

    - That's all! Your IvyDE classpath container resolves all dependencies including those that were transitive to the commons-httpclient module!

    + +
    +
    WTP integration

    WTP refers to the Web Tools Platform project from the Eclipse Foundation which allows Eclipse™ users to easily develop, launch and debug web applications. Apache IvyDE works with WTP 2.0+ (Eclipse 3.3+).

    In the properties of your project configured to use WTP, there is a section titled "Java EE Module Dependencies". In this section you will find the IvyDE classpath container listed, usually with the name "ivy.xml [*]". Select it and dependencies found in the IvyDE classpath container will be deployed as well.

    + +This has been successfully tested with Eclipse 3.3/WTP 2.0, and Eclipse 3.4/WTP 3.0.

    IBM™ Rational Application Developer (RAD™) 7.5.3+

    + +Users of RAD 7.5.3 will notice that the classpath container is not listed in the table. RAD prevents the deployment of classpath containers by default. To allow this behavior, selection Windows > Preferences > Java EE. Check "Allow loose classpath module dependencies". RAD will present you with a warning message. To enable the behavior, you need to check the option again in the popup and click Yes.

    +
    +Note: due to a bug in RAD 7.5.3, this IBM specific property is not persisted when we close the workbench and reopen it. To work around this: +
      +
    • Export RSA preferences ( File > Export > General > Preferences)
    • +
    • Open the exported .epf file and replace
      /instance/org.eclipse.jst.j2ee/org.eclipse.jst.j2ee.preferences.allowClasspathDep=false
      with
      /instance/org.eclipse.jst.j2ee/org.eclipse.jst.j2ee.preferences.allowClasspathDep=true
    • +
    • Load the modified .epf
    • +
    + +

    Resolve in workspace

    + +WTP doesn't support classpath containers like IvyDE's or Maven's one which can link to a Java project in a workspace.

    A feature request has been opened in WTP's Bugzilla: see bug #184125.

    If you really want to link a Java project into the classpath of a WTP project, you should folow what is described in the comment #12 and the comment #17: +
      +
    • in your ivy.xml of your WTP project, exclude from your dependencies the java projects you want to link to (you can create a specific Ivy configuration for that, so it won't mess with the configurations used by an Ant build for instance)
    • +
    • make sure your Java project is a WTP "utility" project
    • +
    • make sure any IvyDE classpath container in the Java projects has been added to the deployment assembly
    • +
    • in your WTP project, add the IvyDE container which resolve the dependencies excluded your Java project dependencies
    • +
    • in your WTP project, add your Java project dependencies to the WTP project using existing deployment
      assembly facilities
    • +
    + +
    Non-Java dependencies


    Ivy is a generic dependency manager and can manipulate jars as well as any other kind of resources. IvyDE leverages this feature by bringing dependency management to non Java Eclipse projects.

    In this document we will document how to work with IvyDE and non Java dependencies with a concrete exemple: we will manage the dependencies between some javascript files and bring them into a Java webapp.

    Import the sample project into Eclipse

    + +The full project sample can be downloaded from there. Unzip it somewhere and import it into Eclipse (see "Existing Projects into Workspace" in the "Import" menu).

    The Eclipse project is already configured with an IvyDE classpath container so we can run the Java webapp. We will just have to add the retrieve of the javascript files.

    Configure the non-Java dependencies

    + +

    Configure the Ivy nature

    + +In order to manage dependencies with Ivy, it is required for the Eclipse project to have the "Ivy" nature.

    In the sample project, an Ivyde classpath container is already configured, so the Eclipse project already has the "Ivy" nature.

    In case your project doesn't has it, right click on the project and in the menu "Configure" select "Add Ivy dependency management".

    + +

    Add a retrieve setup

    + +Now that the project has the Ivy nature, a new entry should have appeared in the properties of your project. This is where non Java dependencies are managed.

    + +Now select "New..." to create a retrieve setup.

    + +

    Name

    +It gives a human readable name to the retrieve setup. This name will be used later in the context menu to actually launch a retreive of the dependencies.
    For the sample project, let's choose "javascripts".

    Ivy file

    +The ivy file which declares the dependencies to retrieve.
    For the sample project, we will use the same one has the one which is used for the Java dependencies (it is not required).

    Retrieve pattern

    +It defines where the dependencies should be retrieved.
    For the sample project we want them there: src/org/apache/ivyde/sample/webappjsrepo/js/[artifact]-[revision].[ext].

    Delete old retrieved artifacts

    +Before doing a retrieve, the location where the dependencies are dowloaded will be wiped out is this option is selected.

    Configurations

    +This is a comma separated list of configuration names which will be used for the resolve (* means All).
    For the sample project, we want it to be js.

    Types

    +This is a comma seperated list of type names which is be retrieved (* means All).
    For the sample project, we want them all: *.

    Now in the "Settings" tab, the setup entries are the same as the global ones. Click on "Enable project specific settings" to customize for your setup.

    + +For the sample project, we want to use the ivysettings in the java project: ${workspace_loc:ivyde-sample-webapp-js-repo/ivysettings.xml}.

    Finally, click OK to finish.

    Launch a retrieve

    + +Now that the retrieve is setup, a new entry should be available in the "Ivy" context menu. The menu entry should be "Retrieve 'xxx'" where "xxx" is the name you gave to the retrieve setup. For the sample project, it will be "Retrieve 'javascripts'".

    Select the entry to actually launch the retrieve. The Eclipse project get automatically refreshed with the retrieved files. For the sample project look into src/org/apache/ivyde/sample/webappjsrepo/js/jquery-1.7.1.min.js.

    + +

    Launch the sample webapp

    + +To see the result, we'll launch the Java webapp and look it it your browser locally.

    Right click the Java class org.apache.ivyde.sample.webappjsrepo.HTTPServer and select "Run As" / "Java Application".
    Now open the web page http://localhost:8888/index.html
    If working properly, the javascript files should have been properly loaded and the input field should have automatically been filled with a default value.

    + +
    Ivy file editor

    Apache IvyDE comes with an Ivy file editor that provides an editor that performs code completion for Ivy xml tags based on the real-time state of your repository. It also packs with an Ivy file creation wizard and HTML preview.

    Creation Wizard

    + +To use the creation wizard, choose File > New > Other > IvyDE > Ivy file in the Eclipse menu (Ctrl+N by default). Select it and click Next.

    + +The wizard contains only one page, and is very simple.

    + +
      Wizard fields:
    1. Container: you must select a target project. (This is already set if you access the wizard through the context menu on your project root folder).
    2. +
    3. File name: the Ivy file name (ivy.xml by default).
    4. +
    5. Organisation: the component owner name. (your company name or the company that provides the component if you are writing an ivy.xml file for 3rd party jars). Note that this value can be set in the Ivy preference page.
    6. +
    7. Module name: the component name.
    8. +
    9. Status: the status of the project. (integration by default since we have just created its ivy file. Please refer to the Ivy documentation for more details).
    10. +
    + +

    Ivy Editor

    + +
    + +Apache IvyDE's Eclipse editor provides XML syntax coloration, tag completion, tag attribute name completion, and dependency and configuration tag value completion.

    Completion comes with contextual help. The completion popup is displayed when through the CTRL + SPACE shortcut.

    Available completions:
      +
    • XML structure: Allows you quickly to insert valid tags at the right place. If the tag can have nested children, both notations, simple tag and open tag, are proposed.

      + +
    • +
    • Tag attributes: When your cursor is placed in a tag bracket, the completion shows available attributes for the enclosing tag.

      + +
    • +
    • Attributes values: When your cursor is placed inside the quotes of an attribute value, the completion shows available values for the matching attribute.

      +
        Available value completion
      • info: organisation (preference based), module (Eclipse project name),
      • +
      • info/ivyauthor: name (preference based), url (pref based)
      • +
      • info/description: homepage (pref based)
      • +
      • info/license: name
      • +
      • info/repository: name (the other attributes depend on it), url, ivys, pattern, artifacts
      • +
      • configurations/conf: visibility, deprecated, extends
      • +
      • publications/artifact: type, conf, ext
      • +
      • dependencies/dependency: org, name, rev are resolved thanks to Ivy using the ivyconf set in the project Ivy preference page. If not set to "default" Ivy uses its defaults resolvers configuration (ie Ivyrep + ibiblio), and if these are not set Ivy uses the ivyconf set in the Eclipse Ivy preference page. conf values are computed from the current ivy.xml file and the dependency ivy.xml file if any.

        + +
      • +
      +
    • +
    + +Change colors: you can change the color used by the editor in the global preferences page.


    Ivy settings editor

    IvyDE provides an editor of ivysettings.xml files. It provides completion on all tag and attribute names.

    + +Completion comes with contextual help. The completion popup is displayed through the CTRL + SPACE shortcut.

    Available completions:
      +
    • XML structure: Allows you to quickly to insert valid tags in the right place. If the tag can have nested childrenm, both notations, simple tag and open tag, are proposed.

    • +
    • Tag attributes: When your cursor is placed inside a tag bracket, the completion shows available attributes for the enclosing tag.

      +
    • +
    + + +Change colors: you can change the color used by the editor in the global preferences page.


    Eclipse global preferences

    Apache IvyDE maintains a global configuration, which controls the behaviour of every Ivy instance in every project in the workspace. This global configuration can be overrided in each project.

    The global configuration can be found in the preferences of Eclipse (menu Window > Preferences for Windows and Linux users, Eclipse > Preferences for mac users), and select the item Ivy.

    Global Ivy preferences

    + +
    + +

    Offline

    +

    If checked, it will force Ivy to never check resources via any network and trust its cache

    +

    On Eclipse startup:

    +

    Specifies what Apache IvyDE should do in every project containing an IvyDE managed classpath container when Eclipse™ is starting up.

    +

    On Ivy file change:

    +

    Controls whether a resolve is performed each time Eclipse detects a change on an ivy.xml file configured by an IvyDE container via a save in the editor, a refresh, or a team/update.

    +

    Organisation:

    +

    Your company name for Ivy editor completion.

    +

    Organisation URL:

    +

    Your company web site url for Ivy editor completion.

    +

    Open a popup on each failed resolve

    +

    On a resolve error, IvyDE mark an error on the ivy.xml of the project; if checked it will also open a popup with a detailed error message

    + +

    Advanced

    + +
    + +

    Resolve before launch:

    +

    An IvyDE container can be used in the classpath of a launch configuration, and the container can be resolved on each launch. See the documentation about launch configurations for further information on this feature.

    + +

    Use extended resolve id

    +

    A resolve id is an identifier which helps Ivy to make cache of results of resolve. By default IvyDE each the id which is composed of the organisation and the module name. An extended resolve id is also composed of the status, branch and revision. If you have troubles with the resolve of multiple versions of the same project within the same workspace, you should probably enable this option.

    + +

    Classpath container

    + +
    + +

    Resolve dependencies in workpace:

    +

    Apache IvyDE allows Ivy dependencies between projects in the workspace to be realized through project references rather than jars from the repository. See the documentation for further information on this feature.

    +

    Accepted types:

    +

    A comma separated list of extensions which will make IvyDE add the artifact to the classpath

    +

    Order of the classpath entries:

    +

    By default, the classpath container entries are ordered by order of declaration in the ivy.xml. When there are many entries, it can be useful to have them ordered lexically for enhanced readability.

    +

    Build the classpath with:

    +

    Either Ivy with build a classpath with references to the artifacts in its cache.

    +

    Or Ivy will retrieve the artifacts with the specified pattern, and then build a classpath with the retrieved jars.

    • Retrieve pattern: The pattern to use for the retrieve. Check Ivy documentation for pattern explanation.
    • +
    • Delete old retrieve artifacts: On each retrieve, the previously retrieved libraries will be removed (similar to the sync argument in the Ant task).
    • +
    • Types: The types of artifact to retrieve (a comma separated list)
    • +
    +

    + +

    Ivy settings

    + +
    + +

    Reload the settings only on demand:

    +

    By default, Apache IvyDE will parse the ivy settings file each times it is needed (each resolve, refresh, clean cache or completion in the ivy editor). For remote ivysettings this can slow the UI dramatically, so it is possible to make IvyDE keep the settings in a cache and only reload them via the context menu on the container).

    +

    Ivy settings path:

    +

    The path to your ivy settings file. Leave it blank to use Ivy default resolvers. See also the documentation about Eclipse variables.

    +

    Property files:

    +

    This is a list of Java properties files to load before loading the ivysettings.xml. Specify in this files properties which you expect to use in the ivysettings.xml

    + +

    Source/Javadoc mapping

    + +
    + +

    Sources types:

    +

    A comma separated list of Ivy "type" names which should be considered sources.

    +

    Sources suffixes:

    +

    A comma separated list of suffixes which will make IvyDE attach as source the artifact with the suffix to the artifact without the suffix. For instance, "commons-lang-sources.jar" will be attached as source to "commons-lang.jar" with the default value.

    +

    Javadoc types:

    +

    same as sources types but for javadocs

    +

    Javadoc suffixes:

    +

    same as sources suffixes but for javadocs

    +

    Auto map jar artifacts with unique source artifact

    +

    If checked, in case there is only one artifact which is detected of type source, then IvyDE will consider this artifact the source of every jar of the module

    +

    Auto map jar artifacts with unique javadoc artifact

    +

    Same as above but with javadoc

    + +

    For further information on how the mapping works, checkout this specific documentation.

    + +

    Workspace resolver

    + +
    + +

    Closing trigger resolve:

    +

    Closing a project which has the workspace resolver enabled will trigger a resolve on every project that depends on it.

    +

    Opening trigger resolve:

    +

    When a project is opened, IvyDE will trigger the resolve of every other project which has the workspace resolver enabled.

    +

    Ignore version when resolving workspace projects:

    +

    This option forces the workspace resolver to ignore the version of a module specified in an ivy.xml if a project containing an Ivy file with that module organization and name is found in the workspace, instead substituting a project reference. This may have unintended consequences.

    + +

    For further information on how the workspace resolver works, checkout this specific documentation.

    + +

    XML Editor

    + +This configuration panel allow you to change the color used in the Ivy file editor and the Ivy settings editor.

    + +
    Eclipse variables

    Eclipse contains a string substitution mecanism. This feature allows you to specify a path location that can be shared between developers.

    Apache IvyDE uses it to find the ivysettings.xml and properties files in both the glogal preference page and the project specific preference page.

    Using the "Workspace..." button will open a window to choose a file in the workspace. Apache IvyDE will automatically fill the field with the proper variable.

    + +Using the "File System..." button will allow you to choose a file in the file system. This path will not be portable.

    Finally, you can choose to depend on the Eclipse variable system by clicking on "Variable...".

    + +Backwards compatibility

    Previously, Apache IvyDE supported the project://projectName/path/to/file.ext protocol. It sill does, but references of this style will be automatically converted in the saved settings to the Eclipse variable way of defining this path: ${workspace_loc:projectName/path/to/file.ext}. + +
    Ivy Console

    The Ivy console provides the Ivy working traces that are visible in the command console. This view can be useful for understanding what Apache Ivy and Apache IvyDE are doing under the covers.
    + +The Ivy Console can be accessed within your Eclipse Console view, by selecting the "Ivy Console" item.
    +
    +

    +
    +The colors in the console correspond to the different log levels. Here is the default mapping: +
      +
    • Debug: light blue
    • +
    • Verbose: green
    • +
    • Info: black
    • +
    • Warn: orange
    • +
    • Error: red
    • +
    + +To change the level of logging in the console, use the button in the view:

    +

    +
    Eclipse's Ant integration

    Most Eclipse™ distributions include a plugin to launch Apache Ant build files. The provided Apache Ant distribution is a standard distribution of Ant that doesn't include Apache Ivy. You may wish to run Ivy targets against Eclipse's Ant distribution.

    Install the plugin

    + +Since IvyDE 2.2, a dedicated plugin can be install so that Ivy Ant tasks are automatically added to Ant's classpath. Go check the IvyDE updatesite and install the plugin named "Apache Ivy Ant Tasks"

    + +

    Manual Configuration

    + +If you want to install your custom version of Ivy, you'll need to do it manually.

    In the global preference page of the Ant runtime, click on Add External JARs...

    + +Then browse your filesystem to the plugins directory of your Eclipse installation and select the Ivy jar named org.apache.ivy_2.X.X.XXXXXXXXX.jar. Now Ivy has been added to the classpath of the Ant distribution embedded in Eclipse.

    Run Apache Ivy targets

    + +Create an Ant build file and declare the Ivy targets with: +
    +    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" />
    +
    +And don't forgot to declare the namespace xmlns:ivy="antlib:org.apache.ivy.ant".

    After the taskdefs have been added, you will have code completion on Ivy tasks:

    + +The build will now be successful:

    + +
    Reverse Dependency Explorer

    Introduction

    + +When working with multiple projects in a workspace that represent the whole or part of a larger application, you may want to simultaneously change the revisions of dependencies in several Ivy files to a single new revision all at the same time (notwithstanding the eviction mechanism inherent to Apache Ivy).

    At other times it is instructive just to see what dependencies are being utilized by projects in the workspace by revision without having to dig into each project and look at each individual module descriptor.

    The Reverse Dependency Explorer turns the dependency tree upside-down, exploring the workspace by organization, module, and revision and providing a mechanism to synchronize revisions across projects/classpath containers.

    Consider the following workspace, with three projects, all of which have an ivy.xml file at their project root. Each of these Ivy files has an associated IvyDE managed classpath container.


    + +Right clicking on any (or all) of the projects and selecting Ivy > Reverse Dependency Explorer opens the view. The explorer displays a tree structure with an item for each organization/module pair. The third column lists all of the revisions of this pair for the selected projects. Expanding a tree item, you can see the module revision that a given Ivy classpath container depends on (if at all). Note that the view only shows direct dependencies and no transitive dependencies.


    + +Organization/module pairs that have conflicting revisions are highlighted in red (junit in the above example). Note that in the above example, though the revisions do not match, these two revision attributes may actually resolve to the same artifact, depending on what is available in the repository. The view does not attempt to perform a resolve and match the resolved artifacts. It simply compares the text of the attributes.

    Synchronizing revisions

    + +To synchronize revisions, click in the column and row of the item you want to change and type in the new revision. The item should be highlighted green to indicate that it is tagged for synchronization. Click the synchronize button as shown to save your changes.


    + + +
    Resolve Visualizer


    The resolve vizulizer show the graph of the dependencies of a project.

    Open the view

    + +To open it, you should open the corresponding view: in the "Window" menu, open the "Show View" submenu and select "Other..."; the view "Ivy Resolve Visualizer" should be found in the "IvyDE" category.

    + +

    Show a project dependencies

    + +Once the view is open, click on the button to select a container and see the result:

    + +
    Developer doc

    Adding new features or fixing bugs needs community involvement.
    Here you will find the basics for how to get involved: +
      +
    • How to build Apache IvyDE from the sources
    • +
    • and the process to de a release of Apache IvyDE
    • +
    +
    Building

    This page describes how to build the Apache IvyDE plugin from the source. The build is based on the Eclipse™ build system so it requires an Eclipse install. You also need to have an Ivy bundle installed.

    Setup of the build

    + +

    Eclipse installation

    + +You need first an Eclipse install which contains the PDE plugins (by default included in the "SDK" and "Classic" versions). We will refer to the eclipse installation path in the documentation as $ECLIPSE_HOME. In that $ECLIPSE_HOME folder you should have the plugins and features folders.

    It is recommended to have an eclipse installation dedicated to the build. So you will be able to have better control over the Ivy bundle installed there. And as the build clean the internal cache of Eclipse, running an eclipse and building with the same instance might raise some troubleshootings in the IDE.

    Lots of ant target depends on that Eclipse installation, so they need a baseLocation property to be defined. Note that you can avoid specifying that property in each command line by having a local.build.properties file which contains somethink like: +
    +baseLocation=/home/me/tools/eclipse-3.4
    +
    + +

    The Apache Ivy bundle

    + +The IvyDE plugins depends on the Apache Ivy 2.0 OSGi bundle. So the Ivy bundle have to be installed in the Eclipse installation before starting the build. An Ant target will accomplished that task quite automatically. Inline help will be displayed when no property is specified: +
    ant install-ivy
    + +Note: due to an old bug in the build script of Ivy, the OSGi version of Ivy is "0.0.0" for every version older than the 2.0.0-RC1. So older version than 2.0.0-RC1 is not supported.

    Building

    + +First somehow you got some sources, for instance from the ASF subversion repository: +
    +svn co https://svn.apache.org/repos/asf/ant/ivy/ivyde/trunk ivyde-trunk
    +
    +or get directly the released sources from the distribution.

    And go into the root folder of the sources. In that folder you should see the builder, org.apache.ivyde.eclipse and org.apache.ivyde.feature folders.

    And run the build: +
    ant build -DbaseLocation=$ECLIPSE_HOME
    + +Then in the created directory "work" you will find a directory (something like 2.0.0.alpha1-200804171513) in which you will find the zip archive ready to be unzipped in an Eclipse install.

    Install

    + +After a successful build you should have a zip file at dist/org.apache.ivyde.feature-$VERSION.zip. The zip file contains the "plugins" and "features" folders ready to be unzipped in an Eclipse install. So here is the process: +
    +cd $ECLIPSE_HOME
    unzip ...../dist/org.apache.ivyde.feature-$VERSION.zip +
    + +Then start your Eclipse and enjoy !

    Releasing

    This documentation is defining every steps that needs to be accomplished when releasing Apache IvyDE.
    In this doc, the released version is denoted as $VERSION, so it HAVE to be replaced in the command line argument accordingly. There is also some $LOGIN which is referencing your login on the Apache machines.

    Prepare

    + +

    Jira

    + +First in Jira make sure that no more issues are opened for the target release.

    Release notes

    + +Make sure the release notes and the annoucement are up to date. Look at doc/release-notes.html. Remove there anything which refers to a draft status.

    Release branch

    + +Some modifications of the branch are need to do the release. So a new branch is needed: +
    +svn copy https://svn.apache.org/repos/asf/ant/ivy/ivyde/trunk \
    https://svn.apache.org/repos/asf/ant/ivy/ivyde/branches/$VERSION \
    -m "Creating a release branch for IvyDE $VERSION" +
    + +and then checkout it: +
    +svn co https://svn.apache.org/repos/asf/ant/ivy/ivyde/branches/$VERSION ivyde-$VERSION
    +
    + +

    Documentation release

    + +The documentation have to specify the correct version number:
    In the files: +
      +
    • doc/template.html
    • +
    +The header should look like this +
    +<title>${title} | Apache IvyDE $VERSION Documentation</title>
    +
    + +

    Commit your changes

    + +Don't forget to commit the changes you've done into the release branch.

    Building

    + +Make sure you have a proper working copy with a svn status. You should have no modification.

    Then launch the build: +
    ant /release clean dist -DbaseLocation=/home/me/...../eclipse/
    + +And sign the artifacts: +
    ./signArtifacts.sh
    + +Then it is time to tag the release as soon as you are happy with your artifacts:
    +
    svn copy https://svn.apache.org/repos/asf/ant/ivy/ivyde/branches/$VERSION \
    https://svn.apache.org/repos/asf/ant/ivy/ivyde/tags/$VERSION \
    -m "Tag IvyDE release $VERSION" +
    + +And don't forget to set the svn:external on doc/xooki to a fixed revision. Edit the svn:external property on the folder doc/xooki in the tag and set it to the revision of the commit of the tag. It should look like: +
    +xooki -r790212 https://svn.apache.org/repos/asf/ant/ivy/site/xooki/
    +
    + +And commit that modification.

    Prepare the updatesite

    + +The instructions to build the updatesite are there:
    http://ant.apache.org/ivy/history/trunk/dev/updatesite.html

    Vote for the released artifacts

    + +First the release needs to be publicly available.

    You can use the dev area of the dist subversion for that. Then just commit the artifacts into https://dist.apache.org/repos/dist/dev/ant/ivyde/$VERSION

    It is recommended to also deploy a staging updatesite there. See that page to know how to proceed.

    And launch the vote on the ant-dev mailing list: +
    +Subject: [VOTE] IvyDE $VERSION Release

    I have built a release candidate for Apache IvyDE $VERSION

    You can download the distribution from this URL: https://dist.apache.org/repos/dist/dev/ant/ivyde/$VERSION

    And a staging update site has been setup there: https://dist.apache.org/repos/dist/dev/ant/ivyde/updatesite

    Do you vote for the release of these binaries?

    [ ] Yes
    [ ] No

    Regards,

    $ME, IvyDE $VERSION release manager +
    + +Note: this page is defining when and how a release can be accepted.

    Deployment

    + +

    Publish the artifacts

    + +The binaries have to be pushed with their signatures and checksums in the apache dist. It is manageg by svnpusub so it needs to be committed into the subversion https://dist.apache.org/repos/dist/release/ant/

    Then just do: +
    +$ svn copy https://dist.apache.org/repos/dist/dev/ant/ivyde/$VERSION https://dist.apache.org/repos/dist/release/ant/ivyde/$VERSION
    $ svn rm https://dist.apache.org/repos/dist/dev/ant/ivyde/$VERSION +
    + +In order to keep the main dist area of a reasonable size, old releases should be removed. They will disapear from the main dist but will still be available via the archive. To do so, just use the svn rm command against the artifacts or folders to remove.

    Deploy the updatesite

    + +Follow the instructions of that page: http://ant.apache.org/ivy/history/latest-milestone/dev/updatesite.html#deployment

    Annoucement

    + +The annoucement should have been already prepared and reviewed by other committers. Its content can be found in doc/release-notes.html.

    With that content, send a mail to announce@apache.org, ivy-user@ant.apache.org and dev@ant.apache.org with the title "[ANNOUNCE] Apache IvyDE $VERSION released", and with your apache email as sender (announce@ requires it).

    Update the documentation

    + +

    Update the table of content

    + +The table of content needs to be updated so that the last documentation point to that new release.

    First we need to update the external links. In svn/site/ivyde/history: +
    svn pe svn:externals .
    +And: + +Then we need to edit svn/site/ivyde/toc.json: + + +Then svn update your working copy (to retrieve the new history branch).

    Update the download page

    + +In the page svn/site/ivyde/download.html change every reference of the old version to the new one.

    Deploy

    + +All site editing being done, commit your changes.

    And now let's generate the site and deploy it:
      +
    1. generate the part of the site for the new version:
    2. +
      +ant generate-history-ivyde -Dhistory.version=$VERSION
      +
      +WARNING: that target is modifiying the toc.json in the imported branch so that the generated html have a proper version declared in the toc. You should not commit that change. Once the site has been generated, you may want to revert the changes so you won't commit it by mistake. (TODO: process to improve so we shouldn't worry).
    3. generate the website with the new toc:
    4. +
      +ant /all generate-site-ivyde
      +
      +
    5. you should verify that the site generated in target is OK. And once your happy with it, commit the changes in target (some svn add might be needed !)
    6. +
    7. deploy the website: go on people.apache.org and svn up /www/ant.apache.org/ivy/ivyde
    8. +
    + +

    Post release tasks

    + +

    Jira

    + +Update the IvyDE Jira project: mark the version as released.

    Bump the version

    + +Update the versions needs to be updated in the following files: +
      +
    • build.properties (edit the qualifier)
    • +
    • org.apache.ivyde.eclipse/META-INF/MANIFEST.MF
    • +
    • org.apache.ivyde.feature/feature.xml
    • +
    + +

    Clean up the release notes

    + +Edit the release notes in the documentation (doc/release-notes.html) so it can be prepared and maintanined for the next release: +
      +
    • edit the content under "Release Annoucement": edit the version it is talking about and clean it up so it is a summary of the release notes
    • +
    • edit the content under "Status of this release": update it with the goal of the next release, or a TODO if it has not yet been defined
    • +
    • edit the content under "Major Changes in this Release": wipe it all and put there something like "Nothing done yet"
    • +
    • edit the content under "List of Changes in this Release": remove the list of entries and update the version in "List of changes since Apache IvyDE X.X.X"
    • +
    + +
    + + + +
    + + Propchange: ant/site/ivyde/production/history/2.2.0.beta1/book.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ant/site/ivyde/production/history/2.2.0.beta1/book.html ------------------------------------------------------------------------------ svn:keywords = Date Revision Author HeadURL Id Propchange: ant/site/ivyde/production/history/2.2.0.beta1/book.html ------------------------------------------------------------------------------ svn:mime-type = text/html