| //// |
| 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. |