持續集成環境就是我們開發的時候,有一套環境自動編譯、打包、測試、部署、發布的環境。
- 構建工具使用maven,在pom.xml中需要配置一個profile,內容如下:
<profiles>
<profile>
<id>deploytoweblogic</id>
<dependencies>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.0.b2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/weblogic</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>10.3.4</version>
<configuration>
<adminurl>10.67.1.1:8080/webmis</adminurl>
<user>admin</user>
<password>admin123</password>
<upload>true</upload>
<action>redeploy</action>
<remote>false</remote>
<verbose>true</verbose>
<source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<name>ctrading2</name>
<delete_files>true</delete_files>
</configuration>
<executions>
<execution>
<id>DeployToRemoteContainer</id>
<phase>install</phase>
<goals>
<goal>redeploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
需要注意三個地方,
(1)紅色配置部分是增加一個依賴,防止與weblogic的jar沖突。如果沒有,會報異常java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
(2)灰色部分是hudson用來發送到weblogic需要執行的插件,執行階段是install。
(3)中間藍色部分是在安裝時覆蓋資源用的。因為開發環境和部署環境使用的數據源是不一樣的,所以在發布時需要使用非開發的數據源。部署環境數據源文件如下:
<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- dataSource -->
<!-- WebLogic JNDI -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="wls_ots_ds" />
</bean>
<!-- Query Data Source -->
<!-- WebLogic JNDI -->
<bean id="dataQuerySource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="wls_ots_query_ds" />
</bean>
</beans>
這樣客戶端maven的工作就完成了,開發時和平常沒有任何區別。
下面介紹hudson配置。
在hudson上添加項目就不說了,只說幾個在配置時需要注意的點:
- source code managemante節點選擇subversion,填寫項目的svn地址。
- build trigger時選擇第三項,在schedule中填入周期,如“0 2 * * *”表示每天2點執行構建。
- build節點的Goals and options填入clean install -DskipTests=true –Pdeploytoweblogic 表示使用maven進行構建,忽略測試,使用deploytoweblogic執行部署。
- 在build節點點擊advanced,在MAVEN_OPTS輸入-Xms512m -Xmx2048m -XX:MaxPermSize=512m。這是因為hudson使用maven構建會占用大量內存,可能會造成內存不足。
剩下的就是weblogic的配置了,那就很簡單了,指定數據源即可。