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>
相关文章
相关标签/搜索