MAVEN ARCHETYPE搭建專案模板
1):進入放入專案的資料夾
圖1
2):使用命令mvn archetype:create-from-project建立需要的模板專案
圖2
圖3
3):建立成功資訊BUILD SUCCESS。建立的模板目錄在
D:\achetype\demo-ruleapp\target\generated-sources\archetype
圖4
4):定製需要的模板
create-from-project 命令說明:
a).maven提供的基礎命令,使用這個命令建立模板會預設查詢最短的包名並使用${package} 。
b).假設這是我們模板檔案中的一段程式碼如:圖5。可以看出最小的包名是com.meyacom(因為第一個import有fw欄位),所以使用create-from-project命令最後得出的檔案應該是如:圖6(請注意#set等關鍵字)。
圖5
圖6
c).當parent的pom.xml檔案中的<artifactId>demo-ruleapp</artifactId>
的屬性值和專案子模組檔名一致時如:圖7,圖8。Maven命令自動會使用佔位符替換如:圖9。當使用模板的時候會用artifactId將佔位符替換
圖7
圖8
圖9
變數替換的說明:
a).檔案路徑
xxx\target\generated-sources\archetype\src\main\resources\archetype-resources\__rootArtifactId__-web\src\main\resources
b).配置檔案使用佔位符:
開啟ruleapp-context.properties檔案會有如下類似的東東:
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
log4j.location=src/main/resources/
oracle.jdbc.jdbcUrl=jdbc:oracle:thin:@localhost:1521:test
oracle.jdbc.user=chenxx
oracle.jdbc.password=root
oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver
# CAS Configuration
cas.client.servlet=http://localhost:9881/ruleapp-ins-web/j_spring_cas_security_check
# SSO Enabled
cas.server.login=http://localhost:7777/login
cas.server.ticketvalidator=http://localhost:7777/
cas.server.logout=http://localhost:7777/logout
# SSO logout_to
cas.server.logout_to=http://localhost:9999/index.do
c).使用佔位符替換所需要的資料庫等資訊(可以根據需要,不必要全部替換):
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
log4j.location=src/main/resources/
oracle.jdbc.jdbcUrl=${oracle-jdbc-jdbcUrl}
oracle.jdbc.user=${oracle-jdbc-user}
oracle.jdbc.password=${oracle-jdbc-password}
oracle.jdbc.driver=${oracle-jdbc-driver}
cas.client.servlet=${cas-client-servlet}
cas.server.login=${cas-server-login}
cas.server.ticketvalidator=${cas-server-ticketvalidator}
cas.server.logout=${cas-server-logout}
cas.server.logout_to=${cas-server-logout_to}
配置檔案說明:
a).配置檔案路徑如下:
xxxxx\target\generated-sources\archetype\src\main\resources\META-INF\maven\archetype-metadata.xml
b).部分配置檔案程式碼(標籤說明請檢視附錄):
圖10
<requiredProperty key="oracle-jdbc-jdbcUrl">
<defaultValue>jdbc:oracle:thin:@localhost:1521:test</defaultValue>
</requiredProperty>
Key為我們在ruleapp-context.properties檔案中使用的佔位符
defaultValue屬性為該佔位符預設的值
archetype.properties配置:
a).檔案路徑如下:Xxxx/target\generated-sources\archetype\src\test\resources\projects\basic/archetype.properties
b).檔案內容:
#Tue Aug 1620:25:01 CST 2016
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
c).增加需要使用佔位符的變數(紅色字型為增加的變數):
#Tue Aug 1620:25:01 CST 2016
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
jdbc-oracle-url=url
………..
注意:jdbc-oracle-url為archetype-metadata.xml檔案中requiredProperties節點的 key屬性(如下圖),等於號後面的可以任意命名
最重要的說明:
a).create-from-project並不是一個很智慧的命令,大多時候使用命令生成的模板都不能滿足需求。如下圖的分析
圖11
圖11為生成模板前的一個片段程式碼,注意紅框的地方。接下來,使用命令生成模板我們來看下實際的效果。圖12,13為parent模組的生成模板前後的程式碼對比
<version>1.1.0</version>其中的1.1.0預設使用了${version}佔位符。這看似沒有什麼問題。當我們找到圖11生成模板之後的程式碼片段如圖14所示。可以看出
生成的模板和我們需要的模板是有一定的差距的。正確的模板應該是如圖15所示
圖12
圖13
圖14
圖15
b).解決上述問題的兩種方法:1).每個檔案去檢查每個佔位符是否正確
2).手動的去替換每一個檔案,自己先寫好每個檔案需要使用佔位符的地方,然後覆蓋使用命令生成的使用佔位符的檔案。
上述過程需要細心和耐心,心情不好的時候請勿嘗試!!!!
c).當我們要生成的模板src/test/java和src/main/java裡面沒有java檔案時,maven會自動把檔案去掉。結果就是我們使用模板生成的專案裡面會沒有src/test/java和src/main/java這些目錄(當然我們可以可以自己新建這些source folder)。雖然在生成專案後不會報錯也不會影響專案執行。但是我們檢視build path——>source可以看出有如下錯誤。如圖16
圖16
為了避免出現這種情況。建議在配置檔案中加入如下的fileset
<fileSet filtered="true"encoding="UTF-8">
<directory>src/test/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
//當main目錄下沒有java檔案
<fileSet filtered="true"encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
遇到的問題及解決思路
1):解決“Dynamic Web Module 3.0 requires Java 1.6 ornewer.”錯誤
(自己的demo,非本專案在此先做記錄)
在專案的pom.xml的<build></build>標籤中加入:
Xml程式碼
1. <plugins>
2. <plugin>
3. <groupId>org.apache.maven.plugins</groupId>
4. <artifactId>maven-compiler-plugin</artifactId>
5. <version>2.3.2</version>
6. <configuration>
7. <source>1.6</source>
8. <target>1.6</target>
9. </configuration>
10. </plugin>
11. </plugins>
2):出現如下錯誤。
1.檢視M2_HOME 的path路徑是否正確。
2.如果正確。恭喜你,可以換系統了。
3):使用模板新建專案,出現Could not saveencoding settings.錯誤。
1.檢視workspace編碼格式是否是utf-8
2.jsp格式是否是utf-8
3.確保.xml和.Properties的編碼格式為utf-8(.xml檔案右鍵--àproperties檢視編碼格式)
4. 新建MAVEN_OPTS環境變數,屬性值為 -Dfile.encoding=utf-8