views:

6580

answers:

2

I am trying to setup Weblogic Server 10.3 (and Portal etc.) to use maven as a build tool. I am trying to find a decent tutorial or documentation how to do this. There are some tutorials for older versions like 9.0, but there is little info for version 10.

I am looking a way to build weblogic's ear file with maven. Are people actually doing this? Is using maven worth the trouble?

I would like to use maven in order to have easier integration with continuous integration tools like Hudson.

edit: There seems to be a way to export maven files directly http://edocs.bea.com/wlw/docs102/guide/ideuserguide/build/conMavenScript.html. But those files are simple wrappers for ant.

+8  A: 

I am using maven to build an EAR which I deploy an WebLogic Server 10.3. The tricky parts were:

  • Finding all dependencies of the weblogic-maven-plugin
  • Putting all dependencies in the maven repo (I really recommend Sonatype Nexus)
  • Setting noExit to true (otherwise you will get problems in hudson!)

I use the following directory structure in the EAR project:

pom.xml
src/
   main/
        app/
            META-INF/
                     weblogic-application.xml

The following is taken from my pom.xml:

<build>
 <plugins>
  <plugin>
   <artifactId>maven-ear-plugin</artifactId>
   <configuration>
    <displayName>My Project</displayName>
    <earSourceDirectory>src/main/app</earSourceDirectory>
    <modules>
     <webModule>
      <groupId>com.somecompany</groupId>
      <artifactId>webapp</artifactId>
     </webModule>
    </modules>
   </configuration>
  </plugin>
  <plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>weblogic-maven-plugin</artifactId>
   <version>2.9.1</version>
   <executions>
    <execution>
     <phase>deploy</phase>
     <goals>
      <goal>deploy</goal>
      <goal>start</goal>
     </goals>
    </execution>
   </executions>
   <configuration>
    <name>my-project</name>
    <adminServerHostName>${wls.adminServerHostName}</adminServerHostName>
    <adminServerPort>${wls.adminServerPort}</adminServerPort>
    <adminServerProtocol>t3</adminServerProtocol>
    <userId>${wls.userId}</userId>
    <password>${wls.password}</password>
    <upload>true</upload>
    <remote>true</remote>
    <verbose>false</verbose>
    <debug>false</debug>
    <targetNames>AdminServer</targetNames>
    <noExit>true</noExit>
   </configuration>
   <dependencies>
    <dependency>
     <groupId>com.sun</groupId>
     <artifactId>tools</artifactId>
     <version>1.5</version>
     <scope>system</scope>
     <systemPath>${java.home}/../lib/tools.jar</systemPath>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>weblogic</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>webservices</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.utils.full</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.i18n</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.rmi.client</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>javax.enterprise.deploy</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>webserviceclient</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.security.wls</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.security.identity</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.security</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>wlclient</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.transaction</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.utils.classloaders</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>wljmsclient</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.management.core</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>wls-api</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.descriptor</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.logging</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.socket.api</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.security.digest</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.workmanager</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.weblogic.lifecycle</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.utils.wrapper</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>wlsafclient</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.management.jmx</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
    <dependency>
     <groupId>weblogic</groupId>
     <artifactId>com.bea.core.descriptor.wl</artifactId>
     <version>${weblogic.version}</version>
     <scope>provided</scope>
    </dependency>
   </dependencies>
  </plugin>
 </plugins>
</build>
Jan Kronquist
+5  A: 

If your Weblogic 10.3 sits on local box, try using Cargo - it's much easier to setup, here is what I had to add to pom.xml

    <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <configuration>
            <container>
                    <containerId>weblogic103x</containerId>
                    <home>/path/to/your/wlserver_10.3</home>
            </container>
    </configuration>
    </plugin>
michal.slocinski