mirror of https://github.com/apache/ant-ivy
121 lines
6.2 KiB
Plaintext
121 lines
6.2 KiB
Plaintext
////
|
|
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
|
|
|
|
https://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.
|
|
////
|
|
|
|
[*__since 2.0__*]
|
|
|
|
The `makepom` task allows to convert an Ivy file to a POM file.
|
|
|
|
An example of use is to publish an Ivy managed module to a Maven 2 repository.
|
|
|
|
_Note that all Ivy features are not supported by Maven POMs, so the converted POM may not resolve to the exact same dependencies as the original Ivy file._
|
|
|
|
[*__since 2.2__*]
|
|
|
|
It is possible to specify a template file defining the structure of the generated POM. The following processing is done on this template:
|
|
|
|
* properties like `${property.name}` are replaced if they are defined in Ant or by the `ivy:makepom` task (see below for the standard properties)
|
|
* lines containing the string `SKIP_LINE` are skipped.
|
|
* the defined dependencies will be added to the first `<dependencies>` element encountered in the POM template. If the template doesn't contain a `<dependencies>` element, it is generated at the end of the POM.
|
|
|
|
The `ivy:makepom` task defines following properties that can be used in the template.
|
|
|
|
* `ivy.pom.groupId`: defaults to the organisation as defined in the ivy.xml file
|
|
* `ivy.pom.artifactId`: defaults to the value of the `artifactName` attribute of this task, or the name of the module as defined in the ivy.xml file
|
|
* `ivy.pom.packaging`: defaults to the value of the `artifactPackaging` attribute of this task, or the extension of the artifact
|
|
* `ivy.pom.version`: defaults to the revision as defined in the ivy.xml file
|
|
* `ivy.pom.name`: defaults to `SKIP_LINE`
|
|
* `ivy.pom.description`: defaults to the value of the `description` attribute of this task, or `SKIP_LINE` when not specified +
|
|
* `ivy.pom.url`: defaults to the homepage as defined in the ivy.xml file
|
|
* `ivy.pom.license`: the content of the specified `headerFile`, or `SKIP_LINE` if not specified
|
|
* `ivy.pom.header`: some Ivy information, or `SKIP_LINE` if the `printIvyInfo` attribute is set to `false`.
|
|
|
|
Note that each property can be given a value manually in the Ant build file. In that case, Ivy will use the value specified in the build file instead of the default value.
|
|
|
|
The default template that ships with Ivy looks like this:
|
|
|
|
[source,xml]
|
|
----
|
|
${ivy.pom.license}
|
|
${ivy.pom.header}
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>${ivy.pom.groupId}</groupId>
|
|
<artifactId>${ivy.pom.artifactId}</artifactId>
|
|
<packaging>${ivy.pom.packaging}</packaging>
|
|
<version>${ivy.pom.version}</version>
|
|
<name>${ivy.pom.name}</name>
|
|
<description>${ivy.pom.description}</description>
|
|
<url>${ivy.pom.url}</url>
|
|
</project>
|
|
----
|
|
|
|
== Attributes
|
|
|
|
[options="header",cols="15%,50%,35%"]
|
|
|=======
|
|
|Attribute|Description|Required
|
|
|ivyfile|the source Ivy file to convert|Yes
|
|
|pomfile|the destination POM file to write|Yes
|
|
|templatefile|the template file to use when generating the POM (*__since 2.2__*)|No, defaults to the internal template file.
|
|
|artifactName|The name of the artifact which is represented by the generated POM file. (*__since 2.2__*)|No, defaults to the module name in the source Ivy file.
|
|
|artifactPackaging|The packaging of the artifact which is represented by the generated POM file. (*__since 2.2__*)|No, the artifact type is taken by default. Defaults to `pom` if no such artifact is defined.
|
|
|conf|a comma separated list of the configurations to include in the generated POM. Wildcards are supported here. (*__since 2.2__*)|No, defaults to all configurations.
|
|
|settingsRef|A reference to Ivy settings that must be used by this task|No, defaults to `ivy.instance`.
|
|
|printIvyInfo|Add some information about Ivy to the generated POM. (*__since 2.2__*)|No, defaults to `true`.
|
|
|headerFile|the header of the generated POM file|No
|
|
|description|The description that will be added to the generated POM. (*__since 2.2__*)|No, defaults to no description or (*__since 2.5__*) to the description in the source Ivy file.
|
|
|=======
|
|
|
|
== Child elements
|
|
|
|
[options="header"]
|
|
|=======
|
|
|Element|Description|Cardinality
|
|
|mapping|describes the mapping from an Ivy module configuration to a Maven POM scope.
|
|
These elements takes two attributes: +
|
|
* `conf`: the configuration to map +
|
|
* `scope`: the scope to which it should be mapped|0..n
|
|
|dependency|describes extra dependencies that should be added to the generated Maven POM file.
|
|
These elements takes the following attributes: +
|
|
* `group`: the groupId. Default `organisation` as defined in `info` +
|
|
* `artifact`: the name of the artifact +
|
|
* `version`: the version. Default `revision` as defined in `info` +
|
|
* `type` (*__since 2.3__*): the type +
|
|
* `classifier` (*__since 2.3__*): the classifier +
|
|
* `scope`: the scope +
|
|
* `optional`: is the artifact optional. Default `false`|0..n
|
|
|=======
|
|
|
|
== Examples
|
|
|
|
[source,xml]
|
|
----
|
|
<ivy:makepom ivyfile="${basedir}/path/to/ivy.xml" pomfile="${basedir}/path/to/module.pom" conf="default,runtime">
|
|
<mapping conf="default" scope="compile"/>
|
|
<mapping conf="runtime" scope="runtime"/>
|
|
<dependency group="com.acme" artifact="acme-logging" version="1.0" optional="true"/>
|
|
</ivy:makepom>
|
|
----
|
|
|
|
Converts `+++${basedir}/path/to/ivy.xml+++` to a POM and writes the result to `+++${basedir}/path/to/module.pom+++`. The configuration 'default' in the parsed Ivy file will be mapped to the scope 'compile', the configuration 'runtime' will be mapped to 'runtime', and other configurations will be excluded.
|
|
|
|
The __com.acme.acme-logging__ artifact with version 1.0 will be added as an optional dependency.
|