Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    SmartClient and Maven: Working examples

    Ok this is not a question, but rather something i hope others find helpful.

    I spent a full day getting SmartClient working in my Maven 2 project, and I found it way more difficult than it should have been. That's because the server side still uses old-school jar files and dependency management.

    Attached is a working POM that contains the dependencies you need to get smartclient server side stuff ( including JPA ) working.

    You'll see in the pom that it was necessary to install isomorphic stuff into our repository.

    [RANT]
    !!!!Attention ISC admins!!!-- for almost $2k per developer, i expect easy, fast maven integration from an enterprise product. If you guys were to create a maven repo ( authenticated, of course, to protect these assets since they are proprietary ), it would have made the setup process 1 hour instead of 10-- not to mention i wouldn't have to be trying to work out dependencies when you guys are already solving that!
    [/RANT]

    Anyway if you add this pom ( and the isomorphic jars ) into the your maven repo, then you can get all of the necessary jars by just including this single maven dependency.

    Next i'm working on a maven war file overlay, so that with one other dependency you get all of the static webcontent too.

    Enjoy!

    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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>isomorphic</groupId>
      <artifactId>smartclient</artifactId>
      <packaging>pom</packaging>
      <version>9.5</version>
      <name>SmartClient Server Side Dependencies</name>
      <url>http://www.smartclient.com</url>
      <dependencies>
      
        <!-- smart client core jars stored in our own repo -->
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>core_rpc</artifactId>
    	  <version>9.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>js_parser</artifactId>
    	  <version>9.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>realtime_messaging</artifactId>
    	  <version>9.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>assembly</artifactId>
    	  <version>9.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>compression</artifactId>
    	  <version>9.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>isomorphic_jpa</artifactId>
    	  <version>9.0</version>
    	</dependency>
    
    	<!-- Weird isomorphic versions of libraries -->
    	<dependency>
    	  <groupId>isomorphic</groupId>
    	  <artifactId>isc-jakarta-oro</artifactId>
    	  <version>9.0</version>
    	</dependency>
    
    	
    	<!-- 
    	transitive deps of smartclient. Why oh wy dont they provide this? 
    	see SmartClient Reference, Deploying Smartclient :: Java Module Dependencies
    
    	These are not all of the dependencies or options, just the ones that came with the samples.
    	These are documented above but not in this list:
    		isomorphic_autotest
    		isomorphic_obfuscation
    		isomorphic_struts
    		isomorphic_sql
    		isomorphic_tools
    		isomorphic_web_services
    		isomorphic_spring
    		isomorphic_examples
    	-->
    
    
    	<!-- required dependencies of core_rpc -->
    	<dependency>
    	  <groupId>commons-cli</groupId>
    	  <artifactId>commons-cli</artifactId>
    	  <version>1.2</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-codec</groupId>
    	  <artifactId>commons-codec</artifactId>
    	  <version>1.8</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-lang</groupId>
    	  <artifactId>commons-lang</artifactId>
    	  <version>2.6</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-collections</groupId>
    	  <artifactId>commons-collections</artifactId>
    	  <version>3.2.1</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-pool</groupId>
    	  <artifactId>commons-pool</artifactId>
    	  <version>1.6</version>
    	</dependency>
    	<dependency>
    	  <groupId>log4j</groupId>
    	  <artifactId>log4j</artifactId>
    	  <version>1.2.17</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-jxpath</groupId>
    	  <artifactId>commons-jxpath</artifactId>
    	  <version>1.3</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-httpclient</groupId>
    	  <artifactId>commons-httpclient</artifactId>
    	  <version>3.1</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-vfs</groupId>
    	  <artifactId>commons-vfs</artifactId>
    	  <version>1.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>commons-fileupload</groupId>
    	  <artifactId>commons-fileupload</artifactId>
    	  <version>1.2.2</version>
    	</dependency>
    	<dependency>
    	  <groupId>org.apache.velocity</groupId>
    	  <artifactId>velocity</artifactId>
    	  <version>1.7</version>
    	</dependency>
    	<dependency>
    	  <groupId>javax.validation</groupId>
    	  <artifactId>validation-api</artifactId>
    	  <version>1.0.0.GA</version>
    	</dependency>
    
    	<!-- optional dependencies of core_rpc -->
    	<!-- for mail notifications feature -->
    	<dependency>
    	  <groupId>javax.mail</groupId>
    	  <artifactId>mail</artifactId>
    	  <version>1.4.7</version>
    	</dependency>
    	<dependency>
    	  <groupId>org.apache.poi</groupId>
    	  <artifactId>poi</artifactId>
    	  <version>3.9</version>
    	</dependency>
    	<dependency>
    	  <groupId>org.apache.poi</groupId>
    	  <artifactId>poi-ooxml</artifactId>
    	  <version>3.9</version>
    	</dependency>
    	<dependency>
    	  <groupId>org.apache.poi</groupId>
    	  <artifactId>poi-ooxml-schemas</artifactId>
    	  <version>3.9</version>
    	</dependency>
    	<dependency>
    	  <groupId>org.apache.xmlbeans</groupId>
    	  <artifactId>xmlbeans</artifactId>
    	  <version>2.6.0</version>
    	</dependency>
    	<dependency>
    	  <groupId>jaxb</groupId>
    	  <artifactId>jsr173_api</artifactId>
    	  <version>1.0</version>
    	</dependency>
    </dependencies>
    
    </project>

    #2
    Thanks for posting your solution. As we've mentioned elsewhere, Maven support for SmartClient is being worked on.

    Please bear in mind that, while people who are fond of Maven are very fond of it and tend to create a lot of visibility for it, Maven remains a minority tool for now. It's not unusual among enterprise products that choosing Maven means creating some extra setup work for yourself.

    But again, we're already working on it.

    Comment


      #3
      RE: SmartClient/Maven

      Thanks for the reply. Thats interesting that from your experience maven is the minority. What are the predominant systems that you see in the java space then?

      I know that a lot of people probably use Ant, or perhaps plain old java IDE... But I'm curious.

      In my mind there is a separation between maven as build tool, and the importance of strong dependency management. I am actually not a maven fanboy-- but I am a fanboy of realizing that dependency management is a problem worth solving. I didn't any other dependency management solutions offered by isomorphic-- maven or otherwise.

      Is it ISC's experience that the 'majority' of java users simply handle dependencies manually then?
      Last edited by david.cowden@colinx.com; 19 Sep 2013, 05:58.

      Comment


        #4
        It's not our experience, just do a few Google searches and you'll uncover various statistics and discussions. Yes, a lack of explicit dependency management and use of Ant or IDE-based builds is the most common setup.

        Comment

        Working...
        X