remove the use of the jelly's tag util:replace with a string to keep the compatibility with maven 1.0

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@289231 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
aheritier
2005-09-15 13:46:37 +00:00
parent f2c1d4cc67
commit 0c0fe08ca3
3 changed files with 81 additions and 41 deletions

View File

@@ -375,63 +375,99 @@
<maven:param-check value="${groupId}" fail="true" message="'groupId' must be specified"/>
<maven:param-check value="${artifactId}" fail="true" message="'artifactId' must be specified"/>
<maven:param-check value="${minRelease}" fail="true" message="'minRelease' must be specified"/>
<maven:param-check value="${neededBy}" fail="true" message="'neededBy' must be specified"/>
<j:set var="pluginToTest" value="${artifactId}"/>
<j:set var="minReleaseToHave" value="${minRelease}"/>
<!-- Remove SNAPSHOT -->
<j:choose>
<j:when test="${minRelease.endsWith('-SNAPSHOT')}">
<j:set var="minReleaseToHave" value="${minRelease.substring(0,minRelease.length()-9)}"/>
</j:when>
<j:otherwise>
<j:set var="minReleaseToHave" value="${minRelease}"/>
</j:otherwise>
</j:choose>
<maven:get plugin="${pluginToTest}" property="plugin" var="installedPlugin" />
<!-- Check if the plugin is installed -->
<j:choose>
<j:when test="${!empty(installedPlugin)}">
<j:set var="installedRelease" value="${installedPlugin.currentVersion}"/>
<!-- Remove SNAPSHOT -->
<u:replace var="installedRelease" escapeText="true" old="-SNAPSHOT" new="">${installedRelease}</u:replace>
<u:replace var="minReleaseToHave" escapeText="true" old="-SNAPSHOT" new="">${minReleaseToHave}</u:replace>
<!-- Tokenify -->
<u:tokenize var="installedReleaseTokens" delim="." escapeText="true">${installedRelease}</u:tokenize>
<u:tokenize var="minReleaseToHaveTokens" delim="." escapeText="true">${minReleaseToHave}</u:tokenize>
<j:set var="minReleaseToHaveTokensIter" value="${minReleaseToHaveTokens.iterator()}"/>
<j:forEach var="numberInstalled" items="${installedReleaseTokens}">
<j:if test="${!minReleaseToHaveTokens.iterator().hasNext()}">
<j:set var="testFailed" value="true"/>
<j:break/>
</j:if>
<j:set var="numberToHave" value="${minReleaseToHaveTokensIter.next()}"/>
<j:invokeStatic var="numberInstalledInteger" className="java.lang.Integer" method="valueOf">
<j:arg value="${numberInstalled}"/>
</j:invokeStatic>
<j:invokeStatic var="numberToHaveInteger" className="java.lang.Integer" method="valueOf">
<j:arg value="${numberToHave}"/>
</j:invokeStatic>
<j:choose>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) lt 0}">
<!--<echo>${numberInstalledInteger} is less than ${numberToHaveInteger}</echo>-->
<j:choose>
<j:when test="${installedPlugin.currentVersion.endsWith('-SNAPSHOT')}">
<j:set var="installedRelease" value="${installedPlugin.currentVersion.substring(0,installedPlugin.currentVersion.length()-9)}"/>
</j:when>
<j:otherwise>
<j:set var="installedRelease" value="${installedPlugin.currentVersion}"/>
</j:otherwise>
</j:choose>
<j:set var="testOk" value="false"/>
<j:set var="testFailed" value="false"/>
<!-- Test strings comparaison -->
<j:choose>
<j:when test="${!installedRelease.equals(minReleaseToHave)}">
<!-- If not equals we use a more complex algorithm -->
<!-- Tokenify -->
<u:tokenize var="installedReleaseTokens" delim="." escapeText="true">${installedRelease}</u:tokenize>
<u:tokenize var="minReleaseToHaveTokens" delim="." escapeText="true">${minReleaseToHave}</u:tokenize>
<j:set var="minReleaseToHaveTokensIter" value="${minReleaseToHaveTokens.iterator()}"/>
<j:forEach var="numberInstalled" items="${installedReleaseTokens}">
<j:if test="${!minReleaseToHaveTokens.iterator().hasNext()}">
<j:set var="testFailed" value="true"/>
<j:break/>
</j:when>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) eq 0}">
<!--<echo>${numberInstalledInteger} is equal than ${numberToHaveInteger}</echo>-->
</j:when>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) gt 0}">
<!--<echo>${numberInstalledInteger} is greater than ${numberToHaveInteger}</echo>-->
<j:break/>
</j:when>
</j:choose>
</j:forEach>
</j:if>
<j:set var="numberToHave" value="${minReleaseToHaveTokensIter.next()}"/>
<j:invokeStatic var="numberInstalledInteger" className="java.lang.Integer" method="valueOf">
<j:arg value="${numberInstalled}"/>
</j:invokeStatic>
<j:invokeStatic var="numberToHaveInteger" className="java.lang.Integer" method="valueOf">
<j:arg value="${numberToHave}"/>
</j:invokeStatic>
<j:choose>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) lt 0}">
<j:set var="errorSentence" value="Actually the plugin ${pluginToTest} v${installedRelease} is installed."/>
<j:set var="testFailed" value="true"/>
<j:break/>
</j:when>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) eq 0}">
</j:when>
<j:when test="${numberInstalledInteger.compareTo(numberToHaveInteger) gt 0}">
<j:set var="testOk" value="true"/>
<j:break/>
</j:when>
</j:choose>
</j:forEach>
</j:when>
<j:otherwise>
<j:set var="testOk" value="true"/>
</j:otherwise>
</j:choose>
</j:when>
<j:otherwise>
<j:set var="errorSentence" value="Actually the plugin ${pluginToTest} isn't installed."/>
<j:set var="testFailed" value="true"/>
</j:otherwise>
</j:choose>
<j:if test="${!testFailed and !testOk and minReleaseToHaveTokens.iterator().hasNext()}">
<!-- A minor release is missing. For example : 1.10 < 1.10.2 -->
<j:set var="errorSentence" value="Actually the plugin ${pluginToTest} v${installedRelease} is installed."/>
<j:set var="testFailed" value="true"/>
</j:if>
<j:if test="${testFailed}">
<ant:fail>
-
=======================================================================================
Must have ${pluginToTest} plugin v${minReleaseToHave} installed to use this version of the plugin.
Try: maven plugin:download -DgroupId=maven -DartifactId=${pluginToTest} -Dversion=${minReleaseToHave}
=======================================================================================
-
===============================================================================
Must have the plugin ${pluginToTest} v${minReleaseToHave} installed to use this version of ${neededBy}.
${errorSentence}
Try: maven plugin:download -DgroupId=maven -DartifactId=${pluginToTest} -Dversion=${minReleaseToHave}
===============================================================================
</ant:fail>
</j:if>
</define:tag>

View File

@@ -24,7 +24,7 @@
</properties>
<body>
<release version="1.7-SNAPSHOT" date="In SVN">
<action dev="aheritier" type="add">new plugin:available tag to check if a minimal release of a plugin is present. (for maven 1.1 only)</action>
<action dev="aheritier" type="add">new plugin:available tag to check if a minimal release of a plugin is present.</action>
</release>
<release version="1.6" date="2005-06-03">
<action dev="vmassol" type="add">Added new

View File

@@ -73,7 +73,6 @@
</subsection>
<subsection name='available Tag'>
<p>Fails the build if the given plugin does not exist or hasn't the minimal release number. Otherwise no effect.</p>
<p><b>Works only with maven 1.1.</b></p>
<table>
<tr><th>Attribute</th><th>Optional?</th><th>Description</th></tr>
<tr>
@@ -91,6 +90,11 @@
<td>No</td>
<td>The minimum plugin's release</td>
</tr>
<tr>
<td>neededBy</td>
<td>No</td>
<td>The name of the plugin or project using this tag. It is used when the tag displays the error for the user.</td>
</tr>
</table>
</subsection>
</section>