1. 程式人生 > >maven自定義目錄

maven自定義目錄

maven優勢於Ant的原因有很大一部分來自於maven減少了手動的配置,這也導致了他結構的特殊。

maven遵循約定大於配置,預設目錄為:

目錄src/main/java java原始碼目錄
目錄src/main/resources 資原始檔目錄
目錄src/test/java 測試java原始碼目錄
目錄src/test/resources 測試資原始檔目錄
目錄target 打包輸出目錄
目錄target/classes 編譯輸出目錄
目錄target/test-classes 測試編譯輸出目錄
目錄target/site 專案site輸出目錄
目錄src/main/webapp web應用檔案目錄(當打包為war時),如WEB-INF/web.xml
jar 預設打包格式
*Test.java Maven只會自動執行符合該命名規則的測試類
%user_home%/.m2 Maven預設的本地倉庫目錄位置
中央倉庫 Maven預設使用遠端中央倉庫:http://repo1.maven.org/maven2
1.3 Maven Compiler外掛預設以1.3編譯,因此需要額外配置支援1.5


但它也支援對約定目錄的自定義更改,通常不建議更改maven預設目錄,這將導致maven不能正常處理對應的邏輯,例如:
<build>  
    <sourceDirectory>src/java</sourceDirectory>  
    <testSourceDirectory>src/test</testSourceDirectory>  
    <outputDirectory>output/classes</outputDirectory>  
    <testOutputDirectory>output/test-classes</testOutputDirectory>  
    <directory>target/jar</directory>  
</build> 
上訴程式碼將java原始碼存放在了src/java中,test原始碼存放在了src/test中,將編譯後的java檔案放在了out/classes中,編譯後的測試檔案放在了output/test-classes中,執行後的打包檔案存放在target/jar中。

通常情況下我們會修改webapp目錄為WebContent目錄,需做如下配置:

<build>
	<finalName>ThesisManage</finalName>
	<!-- 自定義maven結構目錄 -->
	<sourceDirectory>src/main/java</sourceDirectory>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
	</resources>
	<testResources>
		<testResource>
			<directory>src/test/resources</directory>
		</testResource>
	</testResources>
		
	<plugins>
		<!-- 定義編譯版本為1.7,字元編碼為utf8 -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.0.2</version>
			<configuration>
				<source>1.7</source>
				<target>1.7</target>
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>

		<!-- 修改webapp目錄為WebContent -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-war-plugin</artifactId>
			<configuration>
				<!-- 設定WebContent目錄為Web目錄 -->
				<webappDirectory>${basedir}/WebContent</webappDirectory>
				<warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
			</configuration>
		</plugin>
	</plugins>
</build>

其中<webappDirectory>:產生war前,用於存放war的目錄

<warSourceDirectory>:將web專案做成eclipse下的WTP型別,即是用WebContent替換webapp

另外:<packagingExcludes>、<warSourceExcludes>都可以用來忽略打war時的部分包的,如:

<packagingExcludes>
	WEB-INF/lib/spring-2.5.**.jar,
	WEB-INF/lib/jersey-servlet-1.17.1.jar
</packagingExcludes>
上面表示在打war包時忽略spring-2.5的包和jersey-servlet-1.17.1.jar

注意:當修改maven的結構為WebContent代替webapp後,部署專案的時候應該使用外部發布模式。因為maven預設是在webapp/WEB-INF下查詢applicationContext.xml配置檔案,所以應該手動指定它的查詢目錄。

如: