| <?xml version="1.0"?> |
| |
| <!-- |
| 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. |
| |
| --> |
| <model xmlns="http://codehaus-plexus.github.io/MODELLO/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/1.0.0 http://codehaus-plexus.github.io/modello/xsd/modello-1.0.0.xsd" |
| xml.namespace="http://maven.apache.org/TOOLCHAINS/${version}" |
| xml.schemaLocation="http://maven.apache.org/xsd/toolchains-${version}.xsd"> |
| <id>toolchains</id> |
| <name>MavenToolchains</name> |
| <description><![CDATA[ |
| <p>This is a reference for the Maven Toolchains descriptor.</p> |
| <p>The default location for the toolchains file is <code>~/.m2/toolchains.xml</code></p> |
| <p>A Toolchain is a preconfigured object that Maven plugins can use for tool configuration retrieval (location and other information).</p> |
| <p>The <a href="/plugins/maven-toolchains-plugin/">toolchains-plugin</a> can read available toolchains on the user's computer |
| and match them against the toolchain requirements of the project (as configured in <code>pom.xml</code>): |
| if match is found, the toolchain instance is made available to other Maven plugins.</p> |
| <p>With <code>jdk</code> toolchain, for example, instead of being stuck with the JDK used to run Maven, all plugins can use |
| the same other JDK instance without hardcoding absolute paths into the <code>pom.xml</code> |
| and without configuring every plugin that require path to JDK tools.</p> |
| <p>See the <a href="/guides/mini/guide-using-toolchains.html">Guide to Using Toolchains</a> for |
| more information.</p> |
| ]]></description> |
| |
| <defaults> |
| <default> |
| <key>package</key> |
| <value>org.apache.maven.toolchain.model</value> |
| </default> |
| </defaults> |
| |
| <classes> |
| <class java.clone="deep"> |
| <name>TrackableBase</name> |
| <version>1.1.0+</version> |
| <description> |
| common base class that contains code to track the source for |
| this instance (USER|GLOBAL) |
| </description> |
| <codeSegments> |
| <codeSegment> |
| <version>1.1.0+</version> |
| <code> |
| <![CDATA[ |
| public static final String USER_LEVEL = "user-level"; |
| public static final String GLOBAL_LEVEL = "global-level"; |
| |
| private String sourceLevel = USER_LEVEL; |
| private boolean sourceLevelSet = false; |
| |
| public void setSourceLevel( String sourceLevel ) |
| { |
| if ( sourceLevelSet ) |
| { |
| throw new IllegalStateException( "Cannot reset sourceLevel attribute; it is already set to: " + sourceLevel ); |
| } |
| else if ( !( USER_LEVEL.equals( sourceLevel ) || GLOBAL_LEVEL.equals( sourceLevel ) ) ) |
| { |
| throw new IllegalArgumentException( "sourceLevel must be one of: {" + USER_LEVEL + "," + GLOBAL_LEVEL + "}" ); |
| } |
| else |
| { |
| this.sourceLevel = sourceLevel; |
| this.sourceLevelSet = true; |
| } |
| } |
| |
| public String getSourceLevel() |
| { |
| return sourceLevel; |
| } |
| ]]> |
| </code> |
| </codeSegment> |
| </codeSegments> |
| </class> |
| <class rootElement="true" xml.tagName="toolchains" xsd.compositor="sequence"> |
| <name>PersistedToolchains</name> |
| <superClass>TrackableBase</superClass> |
| <description><![CDATA[ |
| The <code><toolchains></code> element is the root of the descriptor. |
| The following table lists all of the possible child elements. |
| ]]></description> |
| <version>1.0.0+</version> |
| <fields> |
| <field> |
| <name>toolchains</name> |
| <version>1.0.0+</version> |
| <description><![CDATA[The toolchain instance definition.]]></description> |
| <association xml.itemsStyle="flat"> |
| <type>ToolchainModel</type> |
| <multiplicity>*</multiplicity> |
| </association> |
| </field> |
| </fields> |
| </class> |
| <class> |
| <name>ToolchainModel</name> |
| <superClass>TrackableBase</superClass> |
| <version>1.0.0+</version> |
| <description>Definition of a toolchain instance.</description> |
| <fields> |
| <field> |
| <name>type</name> |
| <version>1.0.0+</version> |
| <!-- <identifier>true</identifier> --> |
| <description> |
| <![CDATA[Type of toolchain:<ul> |
| <li><code>jdk</code> for |
| <a href="https://maven.apache.org/plugins/maven-toolchains-plugin/toolchains/jdk.html">JDK Standard Toolchain</a>,</li> |
| <li>other value for |
| <a href="https://maven.apache.org/plugins/maven-toolchains-plugin/toolchains/custom.html">Custom Toolchain</a></li> |
| </ul> |
| ]]></description> |
| <type>String</type> |
| </field> |
| <field> |
| <name>provides</name> |
| <version>1.0.0/1.0.99</version> <!-- fake upperbound, it's inclusive --> |
| <type>DOM</type> <!-- DOM for Maven 2.0.9/2.3.3 --> |
| <description> |
| <![CDATA[ |
| <p>Toolchain identification information, which will be matched against project requirements.</p> |
| <p>Actual content structure is completely open: each toolchain type will define its own format and semantics.</p> |
| <p>In general, this is a properties format: <code><name>value</name></code> with |
| predefined properties names.</p> |
| ]]></description> |
| </field> |
| <field> |
| <name>provides</name> |
| <version>1.1.0+</version> |
| <type>Properties</type> <!-- Properties for Maven 2.3.4+ --> |
| <association xml.mapStyle="inline"> |
| <type>String</type> |
| <multiplicity>*</multiplicity> |
| </association> |
| <!-- <identifier>true</identifier> --> |
| <description> |
| <![CDATA[ |
| <p>Toolchain identification information, which will be matched against project requirements.</p> |
| <p>For Maven 2.0.9 to 3.2.3, the actual content structure was completely open: each toolchain type would define its own format and semantics. |
| In general, this was a properties format.</p> |
| <p>Since Maven 3.2.4, the type for this field has been changed to Properties to match the de-facto format.</p> |
| <p>Each toolchain defines its own properties names and semantics.</p> |
| ]]></description> |
| </field> |
| <field> |
| <name>configuration</name> |
| <version>1.0.0+</version> |
| <type>DOM</type> |
| <description> |
| <![CDATA[ |
| <p>Toolchain configuration information, like location or any information that is to be retrieved.</p> |
| <p>Actual content structure is completely open: each toolchain type will define its own format and semantics.</p> |
| <p>In general, this is a properties format: <code><name>value</name></code> with |
| per-toolchain defined properties names.</p> |
| ]]></description> |
| </field> |
| </fields> |
| <codeSegments> |
| <codeSegment> |
| <version>1.1.0+</version> |
| <comment>Generated hashCode() and equals() based on identifier also calls its super, which breaks comparison</comment> |
| <code> |
| <![CDATA[ |
| /** |
| * Method hashCode. |
| * |
| * @return int |
| */ |
| public int hashCode() |
| { |
| int result = 17; |
| |
| result = 37 * result + ( type != null ? type.hashCode() : 0 ); |
| result = 37 * result + ( provides != null ? provides.hashCode() : 0 ); |
| |
| return result; |
| } //-- int hashCode() |
| |
| /** |
| * Method equals. |
| * |
| * @param other |
| * @return boolean |
| */ |
| public boolean equals( Object other ) |
| { |
| if ( this == other ) |
| { |
| return true; |
| } |
| |
| if ( !( other instanceof ToolchainModel ) ) |
| { |
| return false; |
| } |
| |
| ToolchainModel that = (ToolchainModel) other; |
| boolean result = true; |
| |
| result = result && ( getType() == null ? that.getType() == null : getType().equals( that.getType() ) ); |
| result = result && ( getProvides() == null ? that.getProvides() == null : getProvides().equals( that.getProvides() ) ); |
| |
| return result; |
| } //-- boolean equals( Object ) |
| ]]> |
| </code> |
| </codeSegment> |
| </codeSegments> |
| </class> |
| </classes> |
| </model> |
| |