Tomcat plugin can not access variables in tomcat:deploy
-------------------------------------------------------

                 Key: MOJO-1591
                 URL: http://jira.codehaus.org/browse/MOJO-1591
             Project: Mojo
          Issue Type: Bug
          Components: tomcat
            Reporter: Henning Schmiedehausen


I am using the maven buildnumber plugin to generate timestamp specific artifact 
versions when building. However, it is not possible to deploy such artifacts 
with tomcat:deploy because of the forced lifecycle.

Some excerpts from my pom:

<?xml version="1.0" encoding="UTF-8"?>
<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";>
  <build>
    
<finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.0-beta-3</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <doCheck>false</doCheck>
          <doUpdate>false</doUpdate>
          <format>{0,date,yyyyMMdd-HHmmss}_{1}</format>
          <items>
            <item>timestamp</item>
            <item>${user.name}</item>
          </items>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <attachClasses>true</attachClasses>
          <archive>
            <manifest>
              
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <Implementation-Build>${buildNumber}</Implementation-Build>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.1</version>
        <configuration>
          <update>true</update>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.targetJdk>1.6</project.build.targetJdk>
    <project.xyz>${buildNumber}</project.xyz>
  </properties>
</project>

If I run a full build:

% mvn clean package tomcat:deploy

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building mywebapp Maven Webapp
[INFO]    task-segment: [clean, package, tomcat:deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory /buildfolder/mywebapp/target
[INFO] [buildnumber:create {execution: default}]
[INFO] Storing buildNumber: 20101027-132408_henning at timestamp: 1288211048293
[INFO] Compiling 1 source file to /buildfolder/mywebapp/target/classes
[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] Assembling webapp [mywebapp] in 
[/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132408_henning]
[INFO] Processing war project
[INFO] Copying webapp resources [/buildfolder/mywebapp/src/main/webapp]
[INFO] Webapp assembled in [87 msecs]
[INFO] Building war: 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132408_henning.war
[INFO] WEB-INF/web.xml already added, skipping
[...]
[INFO] [tomcat:deploy {execution: default-cli}]
[INFO] Deploying war to http://localhost:8080/mywebapp  
[INFO] OK - Undeployed application at context path /mywebapp
[INFO] OK - Deployed application at context path /mywebapp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12 seconds
[INFO] Finished at: Wed Oct 27 13:24:18 PDT 2010
[INFO] Final Memory: 65M/267M
[INFO] ------------------------------------------------------------------------

running with -X shows, that it actually deploys the war built in regular build, 
not the one in the forked lifecycle:

Regular Lifecycle:

[INFO] Building war: 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132750_henning.war
[...]

Forked Lifecycle:

[INFO] Building war: 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132757_henning.war

Deploys the first one:

[DEBUG] Configuring mojo 'org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy' -->
[DEBUG]   (f) charset = ISO-8859-1
[DEBUG]   (f) contextFile = 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132750_henning/META-INF/context.xml
[DEBUG]   (f) ignorePackaging = false
[DEBUG]   (f) mode = war
[DEBUG]   (f) packaging = war
[DEBUG]   (f) path = /mywebapp
[DEBUG]   (f) update = true
[DEBUG]   (f) url = http://localhost:8080/manager
[DEBUG]   (f) version = 1.1
[DEBUG]   (f) warFile = 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-132750_henning.war
[DEBUG] -- end configuration --
[INFO] [tomcat:deploy {execution: default-cli}]
[INFO] Deploying war to http://localhost:8080/mywebapp  
[DEBUG] No server specified for authentication - using defaults
[INFO] OK - Undeployed application at context path /mywebapp
[INFO] OK - Deployed application at context path /mywebapp

This is awkward but works ok. 

However, if running this without explicitly building the package:

% mvn clean tomcat:deploy

>From the forked lifecycle:

[INFO] Building war: 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-20101027-133052_henning.war
[...]
[DEBUG] Configuring mojo 'org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy' -->
[DEBUG]   (f) charset = ISO-8859-1
[DEBUG]   (f) contextFile = 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-null/META-INF/context.xml
[DEBUG]   (f) ignorePackaging = false
[DEBUG]   (f) mode = war
[DEBUG]   (f) packaging = war
[DEBUG]   (f) path = /mywebapp
[DEBUG]   (f) update = true
[DEBUG]   (f) url = http://localhost:8080/manager
[DEBUG]   (f) version = 1.1
[DEBUG]   (f) warFile = 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-null.war
[DEBUG] -- end configuration --
[INFO] [tomcat:deploy {execution: default-cli}]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Cannot find war file: 
/buildfolder/mywebapp/target/mywebapp-1.0-SNAPSHOT-null.war
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace

So the actual deploy never picks up the information created by the buildnumber 
plugin in the forked lifecycle. This is supposed to be available through 
${executedProject}.




-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to