panemu
Archive for the ‘development-tool’ Category
Maven Multimodule Project and Nexus
After successfully install Nexus and configure Maven to refer to Nexus, I was tempted to apply that technologies to Tiwul. Tiwul is Java framework created by Panemu. It is ready for 3-tiers architecture and client-server. It uses Hibernate, Spring and Openswing (commonos). Although it uses Openswing, Tiwul front end doesn’t have to be Java Swing. It compatible with web and mobile front-end.
Tiwul consists of 2 modules, tiwul-common and tiwul-core. Tiwul-common will be used both by client and server sides of the application that based on Tiwul framework. Tiwul-core is only used by server side application. That’s why, I configure Tiwul project using Maven’s multimodule skeleton as follow:
In eclipse package explorer image above, there are 3 projects, tiwul, tiwul-common and tiwul-core. Tiwul is the parent of tiwul-common and tiwul-core. It doesn’t have source folder, only pom.xml and its module folders. The pom of tiwul project is below:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-parent</artifactId>
<version>1.0-FINAL</version>
<packaging>pom</packaging>
<name>tiwul</name>
<url>http://www.panemu.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<modules>
<module>tiwul-common</module>
<module>tiwul-core</module>
</modules>
</project>
Take alook at groupId, artifactId and version. These attributes will be used in tiwul-common and tiwul-core. Alse packaging type should be pom instead of jar. And See in modules node, there are tiwul-common and tiwul-core in it. Let’s check tiwul-common pom.xml file:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-parent</artifactId>
<version>1.0-FINAL</version>
</parent>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-common</artifactId>
<name>tiwul-common</name>
<url>http://www.panemu.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.openswing</groupId>
<artifactId>commonos</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.1.Final</version>
</dependency>
</dependencies>
</project>
In parent node, it’s defined that its parent project is tiwul-parent. Now let’s see tiwul-core pom.xml:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-parent</artifactId>
<version>1.0-FINAL</version>
</parent>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-core</artifactId>
<name>tiwul-core</name>
<url>http://www.panemu.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.panemu.tiwul</groupId>
<artifactId>tiwul-common</artifactId>
<version>1.0-FINAL</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
</project>
Same with tiwul-common, the parent of tiwul-core is tiwul-parent. That pom.xml file also defined that it is dependent to tiwul-common project.
Now it is time to compile. Of course tiwul-common and tiwul-core have classes in it but I will not explain about it. I executed mvn compile then mvn install. Next I checked my local maven repository. I saw this:
Great. That folders contain jar and pom files generated by mvn install. Now time to upload them to Nexus so my peer programmer can use them.
I put Tiwul framework artifacts in 3rd party repository in Nexus. First I uploaded tiwul-parent pom file. After I selected 3rd party repository, I went to Artifact Upload tab, and selected GAV definition to From POM. Next I looked for tiwul-parent-1.0-FINAL.pom and clicked Upload Arficact(s) button in the bottom of the page.
To upload tiwul-common artifacts, select the corresponding pom file, then jar file to upload. In regards with the jar file, I left Classifier information blank.
Don’t forget to click Add Artifact button, before Upload Artifact(s) button. I did similar steps to upload tiwul-core artifacts. To ensure the upload was okay I went to Browse Storage tab and found below:
Everything seems good. I checked tiwul-common-1.0-FINAL.pom and found its contents was the same with tiwul-common’s pom.xml file I had created in Eclipse.
Next I compiled my application that based on tiwul-framework. Of course I deleted /home/anggit/.m2/repository/com/panemu/tiwul folder so maven will download tiwul artifacts from Nexus.
anggit@anggit:~/workspaces/tw3tiers/example$ mvn compile [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ //I omit some lines here Downloading: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-common/1.0-FINAL/tiwul-common-1.0-FINAL.pom Downloaded: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-common/1.0-FINAL/tiwul-common-1.0-FINAL.pom (2 KB at 3.2 KB/sec) Downloading: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-parent/1.0-FINAL/tiwul-parent-1.0-FINAL.pom Downloaded: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-parent/1.0-FINAL/tiwul-parent-1.0-FINAL.pom (840 B at 5.2 KB/sec) Downloading: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-common/1.0-FINAL/tiwul-common-1.0-FINAL.jar Downloaded: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-common/1.0-FINAL/tiwul-common-1.0-FINAL.jar (7 KB at 28.2 KB/sec) [INFO] //I omit some lines here [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building tw3tiers-core 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-core/1.0-FINAL/tiwul-core-1.0-FINAL.pom Downloaded: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-core/1.0-FINAL/tiwul-core-1.0-FINAL.pom (935 B at 4.1 KB/sec) Downloading: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-core/1.0-FINAL/tiwul-core-1.0-FINAL.jar Downloaded: http://10.1.1.1:9090/nexus/content/groups/public/com/panemu/tiwul/tiwul-core/1.0-FINAL/tiwul-core-1.0-FINAL.jar (16 KB at 41.9 KB/sec) [INFO] [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ tw3tiers-core --- //I omit some lines here [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] tw3tiers .......................................... SUCCESS [0.002s] [INFO] tw3tiers-common ................................... SUCCESS [2.035s] [INFO] tw3tiers-core ..................................... SUCCESS [0.767s] [INFO] tw3tiers-ui ....................................... SUCCESS [0.032s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.000s [INFO] Finished at: Tue Mar 13 18:03:33 WIT 2012 [INFO] Final Memory: 6M/105M [INFO] ------------------------------------------------------------------------
The build was succeeded. I can assure that tiwul framework artifacts are available for my peer programmers here in Panemu. To include tiwul-common dependecy, add below code in pom.xml file:
<dependency> <groupId>com.panemu.tiwul</groupId> <artifactId>tiwul-common</artifactId> <version>1.0-FINAL</version> </dependency>
To include tiwul-core:
<dependency> <groupId>com.panemu.tiwul</groupId> <artifactId>tiwul-core</artifactId> <version>1.0-FINAL</version> </dependency>
Jogjakarta
Telp +62 274 441100





Recent Comments