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>