以下的圖是同事幫我美化過的XD
原版在:Runtime Environment for Continuous Integration with Maven
2014年12月18日 星期四
2013年2月7日 星期四
Android + Maven + M2Eclipse All Together
若是想要在Eclipse裡面使用Maven順利開發Android程式,還是需要動一點手腳的,必要工具有以下三項:
以上就是全部的設定步驟。
建議先裝好Spring Tool Suite會比較方便,以下是安裝與使用步驟:
- 安裝m2e-android,從Eclipse Marketplace裡面搜尋Android可以找到。
- 如果預先裝好STS,那麼只要選第一項就可以了,如果ADT還沒裝,可以在這裡勾選。
- 裝好plugin之後重新啟動Eclipse,然後新增一個Maven project,依照以下畫面新增archetype,然後下一步。
- 依照自己的需要輸入必要欄位,platform的API就看ADT裡面安裝了哪些版本,預設是16。
- 新專案建立之後會有點小問題,一是src/test/java目錄沒開,二是JDK compile版本是1.5,我改成1.6。
- 直接Run As Android Application就會看到執行畫面了。
- 如果要deploy apk到device上,則需要下maven指令install android:deploy以及設定環境變數。
- 設定環境變數ANDROID_HOME,以及在%PATH%中加入%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools。
2013年1月30日 星期三
Tuning Artifactory
通常我們會架設內部的Maven repository當做proxy來節省頻寬並加快下載速度,另一方面也將包好的jar / war上傳到repository讓大家使用,這邊記錄的是架設好Artifactory之後應該要調整的參數。
- Custom URL Base:自動產生Maven Settings裡的URL才會正確。
- Remote Repository Cache:預設是永久保留,但是太久沒使用的舊版library應該被清除。
- Max Unique Snapshots:上傳的snapshot版本其實只需要最新的一份,放太多只是浪費空間,預設也是無限制。
2013年1月21日 星期一
Runtime Environment for Continuous Integration with Maven
運行環境會架設四台server:
- Subversion
- Jenkins
- Artifactory (Internal Repository)
- Apache HTTP Server (Maven Web Site)
2013年1月7日 星期一
Maven的itext-2.1.7.js1.jar在哪?
新版的JasperReports仍然使用舊版的iText 2.1.7,但是iText已經不再維護舊版本,所以JasperReports自己修正了iText的bug,當我們從maven拉dependency時會發現缺少itext-2.1.7.js1.jar,這個就是JasperReports自己的修正版本,而它並沒有被發佈到Maven public repository,而是在JasperReports自己的repository,將這個repository加到pom.xml或是自行架設的Artifactory Server即可。
代碼:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js1</version>
</dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js1</version>
</dependency>
Maven 3 pom.xml 範例
以下是我慣用的maven pom設定,主要是整合了自己架設的Artifactory Server和Web Site,在Jenkins上build的時候執行mvn clean deploy site-deploy。
須注意在report的設定上maven 3和maven 2有不同。
須注意在report的設定上maven 3和maven 2有不同。
代碼:
<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.gss.gmo.cao</groupId>
<artifactId>gmo-cao-hibernate4</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>gmo-cao-hibernate4</name>
<url>http://www.gss.com.tw</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springframework.version>3.2.0.RELEASE</springframework.version>
<hibernate.version>4.1.9.Final</hibernate.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
<dependencies>
<dependency><!-- add support for ssh/scp -->
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-base</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<configuration>
<reportPlugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<charset>${project.build.sourceEncoding}</charset>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.11</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
<configuration>
<configLocation>gss_gmo_cao_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.6</version>
<configuration>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>1.6</targetJdk>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.3.3</version>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-data</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springframework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-gson</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>central</id>
<name>gmo-cao-server.gss.com.tw-releases</name>
<url>http://172.16.3.146/artifactory/libs-release-local</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>gmo-cao-server.gss.com.tw-snapshots</name>
<url>http://172.16.3.146/artifactory/libs-snapshot-local</url>
</snapshotRepository>
<site>
<id>artifactory</id>
<name>Maven Web Site</name>
<url>scp://172.16.3.146/home/artifactory/public_html/maven/${artifactId}</url>
</site>
</distributionManagement>
</project>
用site-deploy製作出來Maven Site畫面: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.gss.gmo.cao</groupId>
<artifactId>gmo-cao-hibernate4</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>gmo-cao-hibernate4</name>
<url>http://www.gss.com.tw</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springframework.version>3.2.0.RELEASE</springframework.version>
<hibernate.version>4.1.9.Final</hibernate.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
<dependencies>
<dependency><!-- add support for ssh/scp -->
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-base</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<configuration>
<reportPlugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<charset>${project.build.sourceEncoding}</charset>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.11</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
<configuration>
<configLocation>gss_gmo_cao_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.6</version>
<configuration>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>1.6</targetJdk>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.3.3</version>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-data</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springframework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.gss.gmo.cao</groupId>
<artifactId>gmo-cao-gson</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>central</id>
<name>gmo-cao-server.gss.com.tw-releases</name>
<url>http://172.16.3.146/artifactory/libs-release-local</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>gmo-cao-server.gss.com.tw-snapshots</name>
<url>http://172.16.3.146/artifactory/libs-snapshot-local</url>
</snapshotRepository>
<site>
<id>artifactory</id>
<name>Maven Web Site</name>
<url>scp://172.16.3.146/home/artifactory/public_html/maven/${artifactId}</url>
</site>
</distributionManagement>
</project>
M2Eclipse Update Snapshot include Sources
正常狀況下,maven預設只會download jar檔,並不會download javadoc和sources,通常我們會在m2eclipse的設定中選取要下載sources,以方便在Eclipse中瀏覽open source code,又或者是直接在pom.xml裡面指定classifier為sources。
而使用m2eclipse來update sanpshot時預設也只會更新jar檔,而不會更新sources除非是在pom.xml裡面指定classifier為sources,但這樣就用掉classifier屬性並不是好的方法。
依照畫面輸入完成Run Configuration即可在任何maven project執行,它會強制更新所有專案用到的snapshot jar和sources檔案。${project_loc}可從Variables裡面選到。
而使用m2eclipse來update sanpshot時預設也只會更新jar檔,而不會更新sources除非是在pom.xml裡面指定classifier為sources,但這樣就用掉classifier屬性並不是好的方法。
依照畫面輸入完成Run Configuration即可在任何maven project執行,它會強制更新所有專案用到的snapshot jar和sources檔案。${project_loc}可從Variables裡面選到。
訂閱:
文章 (Atom)















