The first iteration of a mavenizer, whose history is documented in this forum post and this wiki page, to this point has been too difficult to maintain / collaborate on. The short of it is that I've gone ahead and written a Maven plugin that does pretty much the same thing, with a few improvements (I hope they're improvements). Wiki documentation will be updated in the near-term, but I'm asking the community to test what I have before I invest the time and energy to write it all up comprehensively. Meanwhile, here's what I think you might need to know to get started:
Example Configuration (~/.m2/settings.xml)
Installation
Example usage
Example POM that builds the showcase
Please do give it a try on your own projects and reply here with your findings, including license, version, and any optional modules you might be using.
Thanks in advance,
Bill
- LGPL licenses are now supported.
- The groupId has changed to com.isomorphic.smartgwt.
- Some of the artifactIds have changed slightly. You shouldn't have much trouble figuring out what's available, but note that I tried to stick to the convention where client-side artifacts are prefixed with "smartgwt", and server-side with "isomorphic".
- Version numbers have changed slightly, to take the form major.minor-[d|p]yyyyMMdd. As there is now a patch release available the day after the initial release, there is only support for nightly builds. i.e., you'll have to hack a little bit to get a production release without a 'pyyyyMMdd' classifier.
- I changed some of the dependencies a bit, taking a guess at which dependencies were direct and which were transitive. More accurately, if a dependency was available transitively, it should now be resolved that way. It all seems to work with the showcase app, but I would appreciate some feedback on the POMs themselves (especially from Analytics, Messaging, Hibernate and JPA users).
- Source is finally in a googlecode SVN repo. Find the project's home page at http://code.google.com/p/smartgwt-maven-plugin/.
- The plugin is versioned to track along with SmartGWT releases (2.5p through 4.1d), such that e.g., a 3.0p user should use plugin version 3.0 and a 4.1d user should use the 4.1-SNAPSHOT release. Snapshot releases can be found at https://oss.sonatype.org/content/rep...ies/snapshots/. Production releases are normally released to a staging repository before they are synched to central. The current staging release (4.0p) can be found at https://oss.sonatype.org/content/rep...n-plugin-1007/
- Some of the command line parameters have changed, but the main uses cases can be fulfilled with the following:
Example Configuration (~/.m2/settings.xml)
Code:
<profile>
<id>isc</id>
<properties>
<isc.username>YOUR_SMARTCLIENT_USERNAME</isc.username>
<isc.password>YOUR_SMARTCLIENT_PASSWORD</isc.password>
<license>ENTERPRISE</license>
<!--
<license>LGPL</license>
<license>EVAL</license>
<license>PRO</license>
<license>POWER</license>
<license>ENTERPRISE</license>
-->
<!-- set to true if optional analytics has been licensed with power/enterprise -->
<analytics>false</analytics>
<!-- set to true if optional messaging has been licensed with power/enterprise -->
<messaging>false</messaging>
<!-- to deploy the smartgwt artifacts to some corporate repo via deploy goal -->
<!--
<repository.id>corporate-nexus</repository.id>
<repository.url>http://localhost:9081/nexus/content/repositories/thirdparty/</repository.url>
-->
</properties>
<!-- configuration providing access to staging repos -->
<pluginRepositories>
<pluginRepository>
<id>sonatype-staging</id>
<name>Sonatype Staged Release</name>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>https://oss.sonatype.org/content/repositories/comgooglecodesmartgwt-maven-plugin-1007/</url>
<layout>default</layout>
</pluginRepository>
<pluginRepository>
<id>sonatype-snapshots</id>
<name>Sonatype Release Snapshots</name>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<layout>default</layout>
</pluginRepository>
</pluginRepositories>
</profile>
<pluginGroups>
<pluginGroup>com.googlecode.smartgwt-maven-plugin</pluginGroup>
</pluginGroups>
Code:
//use a plugin version other than the latest (currently 3.1) to be downloaded / installed locally (requires fully qualified group and artifact id) mvn com.googlecode.smartgwt-maven-plugin:smartgwt-maven-plugin:3.0:install -Pisc
Code:
//install today's build mvn smartgwt:install -Pisc //install and deploy today's build mvn smartgwt:deploy -Pisc //install the 1/1/2013 build mvn smartgwt:install -Pisc -Dbuild.date=2013-01-01 //install the 1/1/2013 build again, overwriting whatever was there before (useful after an interrupted execution) mvn smartgwt:install -Pisc -Dbuild.date=2013-01-01 -Doverwrite=true
Code:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>showcase-enterprise</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<gwt.version>2.5.0</gwt.version>
<smartgwt.version>3.1-p20130105</smartgwt.version>
<webapp.directory>${project.build.directory}/${project.build.finalName}</webapp.directory>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>smartgwt-eval</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>smartgwt-analytics</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>smartgwt-messaging</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-network</artifactId>
<version>${smartgwt.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-sql</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-jpa</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-hibernate</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-spring</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>com.isomorphic.smartgwt</groupId>
<artifactId>isomorphic-tools</artifactId>
<version>${smartgwt.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.10</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwt.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-naming</artifactId>
<version>6.1.12</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-plus</artifactId>
<version>6.1.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<!-- http://wiki.eclipse.org/M2E_plugin_execution_not_covered#execute_plugin_goal -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<versionRange>[2.4.0,)</versionRange>
<goals>
<goal>i18n</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<versionRange>[2.1.1,)</versionRange>
<goals>
<goal>exploded</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.version}</version>
<configuration>
<runTarget>index.html</runTarget>
<hostedWebapp>${webapp.directory}</hostedWebapp>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webappDirectory>${webapp.directory}</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
Thanks in advance,
Bill
Comment