maven的setting.xml和pom.xml都是设置使用过程当中的一些仓库、依赖,属性值,插件,环境等配置。原来整个项目都使用maven来管理,使用起来反而很麻烦。如今配合git管理,maven就只用来解决依赖、发布等问题。mysql
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>
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>