blob: 6b4efcfb2b782ec459871c1d86a35f27bc9f05aa [file] [log] [blame]
////
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.
////
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 link:create{outfilesuffix}[container configuration panel], or in the link:../preferences{outfilesuffix}#classpath[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 link:https://ant.apache.org/ivy/history/latest-milestone/ivyfile/artifact.html[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:
[source]
----
<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`