Details
Description
CARGO Maven2 plugin thinks there is nothing to deploy if the only deployable is the Maven2 project itself.
Activity
As of Tomcat 7.x, the access to the manager has changed:
manager-gui provides access to the status pages and the tomcat manager web console. Accounts with this level of access can do anything through the traditional tomcat manager web console. This includes deploying/undeploying apps, viewing stats, generating leak detection diagnostics, expiring sessions, etc.
manager-script
manager-script, provides all the functionality that manager-gui provides but using the text interface instead of the html gui. A savvy scripter using curl or some perl/groovy/java/ruby/powershell/python/etc., scripts can do anything that a user with a web browser can do with the tomcat manager HTML console. If you are an app server administrator who loves the command-line, the manager-script role is for you. One item to note is that the context path for the text interface has changed in Tomcat 7 so existing scripts may need to be reworked.
manager-jmx
manager-jmx provides access to the jmxproxy, which is something monitoring tools & scripts, administrators, and developers may find useful. In addition, this role also has access to the status pages. Existing scripts should work as-is because, unlike the text interface, the context path for the jmxproxy has not changed.
manager-status
manager-status provides the users assigned to that role with access to the statistics that tomcat provides like current threads, max threads, etc. Users belonging to this role will be able to access the Status link on the main tomcat index page but will receive a 403 - Access Denied when attempting to access the Tomcat Manager.
Please give CARGO credentials for a user that has manager-script role.
The problem persists. Mainly, cargo seems to think there is nothing to deploy. I verify that target/hudson.war exists and is readable.
My entire cargo configuration:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.3-SNAPSHOT</version>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.tomcat.manager.url>${cargo.tomcat.manager.url}</cargo.tomcat.manager.url>
<cargo.remote.username>${cargo.remote.username}</cargo.remote.username>
<cargo.remote.password>${cargo.remote.password}</cargo.remote.password>
</properties>
</configuration>
</configuration>
</plugin>
My updated conf/tomcat-users.xml:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="tomcat"/> <user username="tomcatadmin" password="tomcatadmin" roles="admin,admin-gui,admin-script,manager,manager-gui,manager-script"/> </tomcat-users>
A snippet from mvn -X clean package cargo:deploy:
[INFO] --- cargo-maven2-plugin:1.0.3-SNAPSHOT:deploy (default-cli) @ hudson --- [DEBUG] Resolved metadata from cache: repository metadata for: 'snapshot org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT' @ null [DEBUG] cargo-maven2-plugin: using locally installed snapshot [DEBUG] Skipping update check for snapshot org.codehaus.cargo:cargo-extensions-maven2:1.0.3-SNAPSHOT (/home/jesse/.m2/repository/org/codehaus/cargo/cargo-extensions-maven2/1.0.3-SNAPSHOT/maven-metadata-nexus.xml) from repository nexus (http://nexus.acme.com/content/groups/public) in favor of local copy [DEBUG] cargo-extensions-maven2: using locally installed snapshot [DEBUG] Determining update check for snapshot org.codehaus.cargo:cargo-extensions:1.0.3-SNAPSHOT (/home/jesse/.m2/repository/org/codehaus/cargo/cargo-extensions/1.0.3-SNAPSHOT/maven-metadata-nexus.xml) from nexus (http://nexus.acme.com/content/groups/public) [DEBUG] Searching for nexus.maven-metadata-nexus.xml.lastUpdated in resolution tracking file. [DEBUG] Reading resolution-state from: /home/jesse/.m2/repository/org/codehaus/cargo/cargo-extensions/1.0.3-SNAPSHOT/resolver-status.properties [DEBUG] cargo-extensions: resolved to version 1.0.3-20100801.200047-6 from repository nexus [DEBUG] Skipping update check for snapshot org.codehaus.cargo:cargo-parent:4.5-SNAPSHOT (/home/jesse/.m2/repository/org/codehaus/cargo/cargo-parent/4.5-SNAPSHOT/maven-metadata-nexus.xml) from repository nexus (http://nexus.acme.com/content/groups/public) in favor of local copy [DEBUG] cargo-parent: using locally installed snapshot [DEBUG] Determining update check for snapshot org.codehaus.cargo:cargo-core-uberjar:1.0.3-SNAPSHOT (/home/jesse/.m2/repository/org/codehaus/cargo/cargo-core-uberjar/1.0.3-SNAPSHOT/maven-metadata-nexus.xml) from nexus (http://nexus.acme.com/content/groups/public) [DEBUG] Searching for nexus.maven-metadata-nexus.xml.lastUpdated in resolution tracking file. [DEBUG] Reading resolution-state from: /home/jesse/.m2/repository/org/codehaus/cargo/cargo-core-uberjar/1.0.3-SNAPSHOT/resolver-status.properties [DEBUG] cargo-core-uberjar: resolved to version 1.0.3-20100801.200047-6 from repository nexus [DEBUG] Skipping update check for snapshot org.codehaus.cargo:cargo-core:1.0.3-SNAPSHOT (/home/jesse/.m2/repository/org/codehaus/cargo/cargo-core/1.0.3-SNAPSHOT/maven-metadata-nexus.xml) from repository nexus (http://nexus.acme.com/content/groups/public) in favor of local copy [DEBUG] cargo-core: using locally installed snapshot [DEBUG] Resolved metadata from cache: repository metadata for: 'snapshot org.codehaus.cargo:cargo-parent:4.5-SNAPSHOT' @ null [DEBUG] cargo-parent: using locally installed snapshot [DEBUG] Resolved metadata from cache: repository metadata for: 'snapshot org.codehaus.cargo:cargo-core-uberjar:1.0.3-SNAPSHOT' @ nexus [DEBUG] cargo-core-uberjar: resolved to version 1.0.3-20100801.200047-6 from repository nexus [DEBUG] Created new class realm plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT [DEBUG] Populating class realm plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT [DEBUG] Included: org.codehaus.cargo:cargo-maven2-plugin:maven-plugin:1.0.3-SNAPSHOT [DEBUG] Included: dom4j:dom4j:jar:1.4 [DEBUG] Included: xml-apis:xml-apis:jar:1.0.b2 [DEBUG] Included: jaxen:jaxen:jar:1.0-FCS [DEBUG] Included: saxpath:saxpath:jar:1.0-FCS [DEBUG] Included: msv:msv:jar:20020414 [DEBUG] Included: relaxngDatatype:relaxngDatatype:jar:20020414 [DEBUG] Included: isorelax:isorelax:jar:20020414 [DEBUG] Included: jdom:jdom:jar:1.0 [DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:1.4.7 [DEBUG] Included: junit:junit:jar:3.8.1 [DEBUG] Included: org.apache.ant:ant:jar:1.7.1 [DEBUG] Included: org.apache.ant:ant-launcher:jar:1.7.1 [DEBUG] Included: commons-discovery:commons-discovery:jar:0.4 [DEBUG] Included: commons-logging:commons-logging:jar:1.0.4 [DEBUG] Included: org.codehaus.cargo:cargo-core-uberjar:jar:1.0.3-SNAPSHOT [DEBUG] Excluded: org.apache.maven:maven-plugin-api:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-project:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-profile:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-model:jar:2.0 [DEBUG] Excluded: org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8 [DEBUG] Excluded: classworlds:classworlds:jar:1.1-alpha-2 [DEBUG] Excluded: org.apache.maven:maven-artifact-manager:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-repository-metadata:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-artifact:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-settings:jar:2.0 [DEBUG] Configuring mojo org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT:deploy from plugin realm ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT, parent: ClassRealm[project>com.acme.base:hudson:0.0.48-SNAPSHOT, parent: ClassRealm[plexus.core, parent: null]]] [DEBUG] Configuring mojo 'org.codehaus.cargo:cargo-maven2-plugin:1.0.3-SNAPSHOT:deploy' with basic configurator --> [DEBUG] (f) type = runtime [DEBUG] (s) properties = {cargo.remote.password=tomcatadmin, cargo.remote.username=tomcatadmin, cargo.tomcat.manager.url=http://localhost:8080/manager} [DEBUG] (f) configuration = org.codehaus.cargo.maven2.configuration.Configuration@677456bc [DEBUG] (s) containerId = tomcat7x [DEBUG] (f) type = remote [DEBUG] (f) container = org.codehaus.cargo.maven2.configuration.Container@70cf68af [DEBUG] (f) localRepository = id: local url: file:///home/jesse/.m2/repository/ layout: none [DEBUG] (f) project = MavenProject: com.acme.base:hudson:0.0.48-SNAPSHOT @ /home/jesse/workspace/com.acme/base/hudson/pom.xml [DEBUG] (f) repositories = [ id: nexus url: http://nexus.acme.com/content/groups/public layout: default snapshots: [enabled => true, update => daily] releases: [enabled => true, update => daily] ] [DEBUG] (f) settings = org.apache.maven.execution.SettingsAdapter@3219ee8a [DEBUG] -- end configuration -- [DEBUG] There's nothing to deploy [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
We are progressing, it is now clear that this has nothing to do with the Tomcat 7.x container; but rather CARGO "thinking" that there is nothing to deploy.
Please provide your pom.xml file se we can see what is wrong.
I stripped out all my inherited stuff and can still reproduce the problem with the following minimal 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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.acme</groupId> <artifactId>hudson</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.jvnet.hudson.main</groupId> <artifactId>hudson-war</artifactId> <version>1.371</version> <type>war</type> <scope>runtime</scope> </dependency> </dependencies> <build> <finalName>hudson</finalName> <plugins> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0.3-SNAPSHOT</version> <configuration> <container> <containerId>tomcat7x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url> <cargo.remote.username>tomcatadmin</cargo.remote.username> <cargo.remote.password>tomcatadmin</cargo.remote.password> </properties> </configuration> </configuration> </plugin> </plugins> </build> </project>
Workaround: add the current project to the CARGO plugin's <deployables> list.
I checked out revision 2422 and still can not get Tomcat 7.x remote deployment working.. I have it installed to localhost:8080 and have tried using cargo.tomcat.manager.url of http://localhost:8080/manager/text and http://localhost:8080/manager both to no avail. I am certain I have the credentials correct, as I can browse to the /manager without issue using tomcat/tomcat.
Cargo does not report any information, even with -X, and I see nothing in catalina.out ... I'm mystified.