Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.1.0
    • Fix Version/s: None
    • Component/s: deploy task, install task
    • Labels:
      None
    • Environment:
      Windows Vista/Ant 1.7.1/Maven ant tasks 2.1.0
    • Number of attachments :
      0

      Description

      When running a built with the following:

      <target name="deploy-to-nexus" depends="package" description="Move SVN jars to Nexus">
        <artifact:pom id="pom1" groupId="nl.fbn.ullink" artifactId="${module}-${ext}" version="${version}">
         <artifact:dependency groupId="junit" artifactId="junit" version="4.1"/>
         <artifact:dependency groupId="org.codehaus.plexus" artifactId="plexus-utils" version="1.5.5"/>
        </artifact:pom>
      		
        <artifact:install file="${workspace}/target/${module}-${ext}.tgz">
          <artifact:pom refid="pom1"/>
        </artifact:install>
      </target>

      The following is logged: [artifact:install] [INFO] Installing e:\tmp\ullink\target\ULBridge_8080-bin.tgz to C:\Users\X09629\.m2\repository\org\apache\maven\super-pom\2.0\super-pom-2.0.jar

      It seems the POM definition is not picked up correctly during the install stage.

        Issue Links

          Activity

          Hide
          Andrew MacLeod added a comment - - edited

          I have been looking for a workaround to this... i tried rolling back to maven-ant-tasks-2.0.10.jar but to my surprise it tells me:

          artifact:pom doesn't support the "version" attribute

          ... so I'm guessing that in-memory POMs are not supported in 2.0.10, though there is nothing in the documentation to suggest this (i.e. the example in https://maven.apache.org/ant-tasks/examples/pom.html), whereas the reference does not specify options for in-memory POMs either (https://maven.apache.org/ant-tasks/reference.html#pom).

          Until this is fixed, I'm giving up on in-memory POMs, and have presented a workaround in ant below (it's a hack, but at least it's self-contained in a macro). p.s. I love Maven, but whenever it bites me, ant saves the day
          <attribute name="pomrefid"/>
          <attribute name="groupId"/>
          <attribute name="artifactId"/>
          <attribute name="version"/>
          <attribute name="packaging"/>
          <sequential>
          <var name="temp.pom.file" unset="true"/>
          <var name="temp.pom.file" value="$

          {TEMP.DIR}/pom.xml"/>
          <mkdir dir="${TEMP.DIR}

          "/>
          <echo message='&lt;?xml version="1.0" encoding="UTF-8"?&gt;$

          {line.separator}' file='${temp.pom.file}'/>
          <echo message='&lt;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/maven-v4_0_0.xsd"&gt;${line.separator}

          ' file='$

          {temp.pom.file}' append='true'/>
          <echo message=' &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;${line.separator}' file='${temp.pom.file}

          ' append='true'/>
          <echo message=' &lt;groupId&gt;@

          {groupId}

          &lt;/groupId&gt;$

          {line.separator}' file='${temp.pom.file}' append='true'/>
          <echo message=' &lt;artifactId&gt;@{artifactId}&lt;/artifactId&gt;${line.separator}

          ' file='$

          {temp.pom.file}' append='true'/>
          <echo message=' &lt;version&gt;@{version}&lt;/version&gt;${line.separator}' file='${temp.pom.file}

          ' append='true'/>
          <echo message=' &lt;packaging&gt;@

          {packaging}

          &lt;/packaging&gt;$

          {line.separator}' file='${temp.pom.file}' append='true'/>
          <echo message='&lt;/project&gt;${line.separator}

          ' file='$

          {temp.pom.file}' append='true'/>
          <artifact:pom id="@{pomrefid}" file="${temp.pom.file}

          "/>
          </sequential>
          </macrodef>

          Show
          Andrew MacLeod added a comment - - edited I have been looking for a workaround to this... i tried rolling back to maven-ant-tasks-2.0.10.jar but to my surprise it tells me: artifact:pom doesn't support the "version" attribute ... so I'm guessing that in-memory POMs are not supported in 2.0.10, though there is nothing in the documentation to suggest this (i.e. the example in https://maven.apache.org/ant-tasks/examples/pom.html ), whereas the reference does not specify options for in-memory POMs either ( https://maven.apache.org/ant-tasks/reference.html#pom ). Until this is fixed, I'm giving up on in-memory POMs, and have presented a workaround in ant below (it's a hack, but at least it's self-contained in a macro). p.s. I love Maven, but whenever it bites me, ant saves the day <attribute name="pomrefid"/> <attribute name="groupId"/> <attribute name="artifactId"/> <attribute name="version"/> <attribute name="packaging"/> <sequential> <var name="temp.pom.file" unset="true"/> <var name="temp.pom.file" value="$ {TEMP.DIR}/pom.xml"/> <mkdir dir="${TEMP.DIR} "/> <echo message='&lt;?xml version="1.0" encoding="UTF-8"?&gt;$ {line.separator}' file='${temp.pom.file}'/> <echo message='&lt;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/maven-v4_0_0.xsd "&gt;${line.separator} ' file='$ {temp.pom.file}' append='true'/> <echo message=' &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;${line.separator}' file='${temp.pom.file} ' append='true'/> <echo message=' &lt;groupId&gt;@ {groupId} &lt;/groupId&gt;$ {line.separator}' file='${temp.pom.file}' append='true'/> <echo message=' &lt;artifactId&gt;@{artifactId}&lt;/artifactId&gt;${line.separator} ' file='$ {temp.pom.file}' append='true'/> <echo message=' &lt;version&gt;@{version}&lt;/version&gt;${line.separator}' file='${temp.pom.file} ' append='true'/> <echo message=' &lt;packaging&gt;@ {packaging} &lt;/packaging&gt;$ {line.separator}' file='${temp.pom.file}' append='true'/> <echo message='&lt;/project&gt;${line.separator} ' file='$ {temp.pom.file}' append='true'/> <artifact:pom id="@{pomrefid}" file="${temp.pom.file} "/> </sequential> </macrodef>
          Hide
          Greg Vanore added a comment - - edited

          A simpler workaround is to use the writepom task:

          Declare your in-memory pom:
          <artifact:pom id="template" ... >
          ...
          </artifact:pom>

          <macrodef name="bug170workaround">
          <attribute name="srcpom"/>
          <attribute name="destpom"/>
          <attribute name="dir" default="$

          {TEMP.DIR}

          "/>
          <sequential>
          <artifact:writepom id="@

          {srcpom}

          " file="@

          {dir}/pom.xml"/>
          <artifact:pom id="@{destpom}" file="@{dir}

          /pom.xml"/>
          </sequential>
          </macrodef>

          [edit: improved snippet]

          Show
          Greg Vanore added a comment - - edited A simpler workaround is to use the writepom task: Declare your in-memory pom: <artifact:pom id="template" ... > ... </artifact:pom> <macrodef name="bug170workaround"> <attribute name="srcpom"/> <attribute name="destpom"/> <attribute name="dir" default="$ {TEMP.DIR} "/> <sequential> <artifact:writepom id="@ {srcpom} " file="@ {dir}/pom.xml"/> <artifact:pom id="@{destpom}" file="@{dir} /pom.xml"/> </sequential> </macrodef> [edit: improved snippet]
          Hide
          sixman9 added a comment -

          Hi guys,
          Thanks for the workaround, however, I believe the snippet should contain the 'pomrefid' instead of solely 'id' on the <artifact:writepom> node, thus:

          <artifact:writepom id="@

          {srcpom}" file="@{dir}/pom.xml"/>

          should read

          <artifact:writepom pomrefid="@{srcpom}

          " file="@

          {dir}

          /pom.xml"/>

          Hope this helps

          Cheers

          Rich

          Show
          sixman9 added a comment - Hi guys, Thanks for the workaround, however, I believe the snippet should contain the 'pomrefid' instead of solely 'id' on the <artifact:writepom> node, thus: <artifact:writepom id="@ {srcpom}" file="@{dir}/pom.xml"/> should read <artifact:writepom pomrefid ="@{srcpom} " file="@ {dir} /pom.xml"/> Hope this helps Cheers Rich

            People

            • Assignee:
              Unassigned
              Reporter:
              Marcel Ammerlaan
            • Votes:
              7 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated: