MAVEN的setting.xml和pom.xml

MAVEN的setting.xml和pom.xml

    maven的setting.xml和pom.xml都是設置使用過程當中的一些倉庫、依賴,屬性值,插件,環境等配置。原來整個項目都使用maven來管理,使用起來反而很麻煩。如今配合git管理,maven就只用來解決依賴、發佈等問題。mysql

一、maven的setting.xml

        setting.xml如今主要用來配置倉庫,以及倉庫的帳戶密碼、鏡像git

1.本地倉庫
<localRepository/> 

2.是否運行用戶輸入。 
<interactiveMode/> 

3.插件註冊
<usePluginRegistry/> 

4.是否從網絡下載依賴和插件 
<offline/>  

5.插件
<pluginGroups/> 

6.倉庫的帳戶密碼等驗證信息
<servers>
  <server>  
     <id>server001</id>  
     <username>my_login</username>  
     <password>my_password</password>  
     <privateKey>${usr.home}/.ssh/id_dsa</privateKey>  
     <passphrase>some_passphrase</passphrase>  
     <filePermissions>664</filePermissions>  
     <directoryPermissions>775</directoryPermissions>  
     <configuration></configuration>  
   </server>  
</servers> 

6.鏡像:將匹配的倉庫攔截到鏡像中
<mirrors>
  <mirror>  
     <id>planetmirror.com</id>  
     <name>PlanetMirror Australia</name>  
     <url>http://downloads.planetmirror.com/pub/maven2</url>
     <!--匹配的倉庫名,能夠用*,!來設置-->
     <mirrorOf>central</mirrorOf>  
   </mirror> 
</mirrors> 

7.網絡代理 
<proxies>
  <proxy>  
     <id>myproxy</id>  
     <active>true</active>  
     <protocol>http</protocol>  
     <host>proxy.somewhere.com</host>  
     <port>8080</port>  
     <username>proxyuser</username>  
     <password>somepassword</password>  
     <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>  
   </proxy>  
</proxies>

8.特定環境配置(這裏通常用來設置倉庫)  
<profiles>

      <!--惟一標識符-->
     <id>env-test</id> 

      <!--激活環境-->
     <activation>  
        <activeByDefault>false</activeByDefault>  
        <jdk>1.5</jdk>  
        <os>  
          <name>Windows XP</name>  
          <family>Windows</family>  
          <arch>x86</arch>  
          <version>5.1.2600</version>  
        </os>  
        <property>  
          <name>mavenVersion</name>  
          <value>2.0.3</value>  
        </property>  
        <file>  
          <exists>${basedir}/file2.properties</exists>  
          <missing>${basedir}/file1.properties</missing>  
        </file>  
      </activation>

       <!--倉庫-->
      <repositories>  
        <repository>  
          <id>repo-local</id>  
          <name>Internal 開發庫</name>  
          <url>http://192.168.0.2:8082/repo-local</url>  
          <releases>  
            <enabled>true</enabled>  
            <updatePolicy>never</updatePolicy>  
            <checksumPolicy>warn</checksumPolicy>  
          </releases>  
          <snapshots>  
            <enabled>false</enabled>  
          </snapshots>  
          <layout>default</layout>  
        </repository>  
      </repositories>  
       
       <!--插件倉庫-->
      <pluginRepositories>  
        <pluginRepository>  
		  <id>repo-local</id>  
		  <name>Internal 開發庫</name>  
		  <url>http://192.168.0.2:8082/repo-local</url>  
		  <releases>  
			<enabled>true</enabled>  
			<updatePolicy>never</updatePolicy>  
			<checksumPolicy>warn</checksumPolicy>  
		  </releases>  
		  <snapshots>  
		     <enabled>false</enabled>  
		  </snapshots>  
		  <layout>default</layout>  
        </pluginRepository>  
      </pluginRepositories> 
</profiles>

9.激活的環境配置  
<activeProfiles>  
    <activeProfile>env-test</activeProfile> 指定的profile id  
</activeProfiles>

二、maven的pom設置

   pom.xml設置的是模塊的具體配置。主要是:插件,環境變量,依賴管理,發佈管理。而倉庫的信息都是配置在setting.xml中的。web

<project>  
<modelVersion>4.0.0modelVersion>  

一.構建設置
1.父工程信息
<parent>   
	 <artifactId />   
	 <groupId />   
	 <version />   
	 <!-- 父項目的pom.xml文件的相對路徑。默認值是../pom.xml。 -->    
	 <relativePath />    
</parent> 

2.父工程中設
<modules>子模塊組位置<modules>   

3.工程信息
<groupId>項目組名<groupId>(有父工程,能夠直接繼承父工程)
<artifactId>項目名<artifactId>  
<version>版本version>(有父工程,能夠直接繼承父工程)  
<packaging>打包類型<packaging>
ps:打包類型:pom(父工程),jar,war

3.依賴
父工程依賴管理,爲了減小每個模塊都引用一次。這裏能夠先設置,子模塊直接使用<dependencie>引用,只須要設置<groupId>和<artifactId>、<scope>等信息
<dependencyManagement>
	<dependencies>
		...一些<dependencies>
	</dependencies>
dependencyManagement>  

具體的依賴
<dependencies>
	<dependencie>
			<groupId>項目組名<groupId>
			<artifactId>項目名<artifactId>  
			<version>版本version>
			<scope></scope>
			<systemPath></systemPath>(本地依賴地址,當scope爲system時使用)
			<optional></optional>
			<exclusions>   
				(排除依賴,排除本依賴的依賴項目)
				<exclusion>   
				<artifactId> spring-core </artifactId>     
				<groupId> org.springframework </groupId>     
				</exclusion>     
			</exclusions>
		</dependencie>
<dependencies>
(
scope的範圍
	compile :默認範圍,用於編譯
	provided:再也不打包的時候使用,好比servlet這種服務器環境有,就不須要打包進去
	runtime: 只須要在package的時候使用,例如.mysql-jdbc這種
	test:用於test任務時使用
	system: 本地依賴 
optional:是否可繼承
	true:將會使得依賴與本模塊的項目。須要再次添加一次本依賴。有B->C,使用A->B,還須要設置A->C
	false:有B->C,使用A->B,不須要在設置A->C。B直接將C加載進來
	
)
  
4.設置屬性
<properties>
	<propertie.name></propertie.name>
<properties> 

5.發佈管理(在咱們deploy的時候須要使用到發佈)
<distributionManagement>
	<!--倉庫-->
	<repository>     
		<uniqueVersion>false</uniqueVersion>
        <id>corp1</id>
        <name>Corporate Repository</name>
        <url>scp://repo/maven2</url>
        <layout>default</layout>   
	</repository>   
	<!--快照倉庫-->
	<snapshotRepository>   
		<uniqueVersion />   
		<id> banseon-maven2 </id>   
		<name> Banseon-maven2 Snapshot Repository </name>   
		<url> scp://svn.baidu.com/banseon:/usr/local/maven-snapshot </url>   
		<layout />   
	</snapshotRepository>   
	<!-- 部署項目的網站須要的信息 -->   
	<site>   
		<id> banseon-site </id>   
		<name> business api website </name>   
		<url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web</url>   
	</site>   

	<!-- 項目下載頁面的URL。若是沒有該元素,用戶應該參考主頁。使用該元素的緣由是:幫助定位那些不在倉庫裏的構件(因爲license限制)。 -->   
    <downloadUrl />   
  
   <!-- 若是構件有了新的group ID和artifact ID(構件移到了新的位置),這裏列出構件的重定位信息。 -->   
	<relocation>     
		<groupId />   
		<artifactId />      
		<version />    
		<message />   
	</relocation>    
	
	<status></status>  
<distributionManagement>
(
status:給出該構件在遠程倉庫的狀態。不得在本地項目中設置該元素,由於這是工具自動更新的
	none(默認),
	converted(倉庫管理員從Maven 1 POM轉換過來),
	partner(直接從夥伴Maven 2倉庫同步過來),
	deployed(從Maven 2實例部署),
	verified(被覈實時正確的和最終的)。
)  
  
6.構建時設置 
(
1.當咱們構建的時候,整個環境的構建設置、插件
2.構建時,會將生成的文件放在${basedir}/target中
)
<build>
	<defaultGoal>install</defaultGoal>//默認目標
	<directory>${basedir}/target</directory>//構建的生成文件文章
	<finalName>${artifactId}-${version}</finalName>//名字
	(
		ps:通常來講<filters>、<resource>設置一個就好了。大部分時候都在resource中就好了
	)
	/**
	*過濾的properties文件,由於咱們可能會使用不一樣<profile>信息,在properties中咱們會是喲個${proeprty.name}設置。
	*當咱們須要構建的時候,會從全局<proeprties>和<profile>的<proeprties>替換
	**/
	<filters>
		<filter>filters/filter1.properties</filter>
	</filters>
  
	//資源文件
	<resources>
      <resource>
        <targetPath>META-INF/plexus</targetPath>
        <filtering>false</filtering>//是否在構建的時候過濾其中的${property.name}信息
        <directory>${basedir}/src/main/plexus</directory>
		//包涵的資源文件
        <includes>
          <include>configuration.xml</include>
        </includes>
		//不包含的資源文件
        <excludes>
          <exclude>**/*.properties</exclude>
        </excludes>
      </resource>
    </resources>
	
	//測試資源文件
    <testResources>
      ...
    </testResources>
	
	<!-- 插件:須要和maven的生命週期一塊兒理解 -->
	<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <extensions>false</extensions>
        <inherited>true</inherited>
        <configuration>
          <classifier>test</classifier>
        </configuration>
        <dependencies>...</dependencies>
		
		<!--激活方式-->
        <executions>
			<execution>
				
              <id>pre-process-classes</id>
			  <!--執行的起始階段(就是在maven生命週期的哪一個階段後來執行)-->
              <phase>compile</phase>
			  <!--執行的目標-->
              <goals>
                <goal>jar</goal>
              </goals>
			  <!--執行的配置屬性-->
              <configuration>
                <classifier>pre-process</classifier>
              </configuration>
            </execution>
			
		</executions>
      </plugin>
    </plugins>
	
	<!--父類工程用來管理插件的-->
	<pluginManagement>
      <plugins>...</plugin>
      </plugins>
    </pluginManagement>
<build> 


7.倉庫(通常設置在setting中)
<repositories>
	<repository>
      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <id>codehausSnapshots</id>
      <name>Codehaus Snapshots</name>
      <url>http://snapshots.maven.codehaus.org/maven2</url>
      <layout>default</layout>
    </repository>
<repositories> 

8.插件倉庫
<pluginRepositories>
<pluginRepositories>
9.報表設置(site階段)
<reporting>...reporting>  

10.特定的運行環境,當使用-P xxx的時候會,從profile提供的<id>xxx</id>來提取配置環境
<profiles>
	<profile>
      <id>test</id>
	  <properties></properties>(通常在單獨一個環境設置)
      <activation>...</activation>(激活)
      <build>...</build>
      <modules>...</modules>
      <repositories>...</repositories>
      <pluginRepositories>...</pluginRepositories>
      <dependencies>...</dependencies>
      <reporting>...</reporting>
      <dependencyManagement>...</dependencyManagement>
      <distributionManagement>...</distributionManagement>
    </profile>
</profiles>

二.構建其它信息    
  <name>名稱<name>  
  <description>描述<description>  
  <url>地址<url>  
  <inceptionYear>最新的發佈點<inceptionYear>  
  <licenses>licenses<licenses>  
  <organization>組織信息<organization>  
  <developers>開發者信息<developers>  
  <contributors>貢獻值信息<contributors>  
  
    
  <issueManagement>項目管理系統<issueManagement>  
  <ciManagement>項目持續集成信息<ciManagement>  
  <mailingLists>項目郵件列表<mailingLists>  
  <scm>標籤容許你配置你的代碼庫<scm>  
  <prerequisites>描述了這個項目構建環境中的前提條件<prerequisites>  
</project>
相關文章
相關標籤/搜索