|
說(shuō)完了settings.xml配置,下來(lái)說(shuō)一下maven2的主要配置pom.xml 什么是pom? pom作為項(xiàng)目對(duì)象模型。通過(guò)xml表示maven項(xiàng)目,使用pom.xml來(lái)實(shí)現(xiàn)。主要描述了項(xiàng)目:包括配置文件;開(kāi)發(fā)者需要遵循的規(guī)則,缺陷管理系統(tǒng),組織和licenses,項(xiàng)目的url,項(xiàng)目的依賴(lài)性,以及其他所有的項(xiàng)目相關(guān)因素。 快速察看: <project> <modelVersion>4.0.0</modelVersion> <!-- The Basics --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!-- Build Settings --> <build>...</build> <reporting>...</reporting> <!-- More Project Information --> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- Environment Settings --> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles> </project> 基本內(nèi)容: POM包括了所有的項(xiàng)目信息。 maven 相關(guān): pom定義了最小的maven2元素,允許groupId,artifactId,version。所有需要的元素
主要為依賴(lài),繼承,合成 依賴(lài)關(guān)系: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <type>jar</type> <scope>test</scope> <optional>true</optional> </dependency> ... </dependencies>
可以通過(guò)以下方式進(jìn)行安裝:
外在告訴maven你只包括指定的項(xiàng)目,不包括相關(guān)的依賴(lài)。此因素主要用于解決版本沖突問(wèn)題 <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-embedder</artifactId> <version>2.0</version> <exclusions> <exclusion> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> </exclusion> </exclusions> </dependency> 表示項(xiàng)目maven-embedder需要項(xiàng)目maven-core,但我們不想引用maven-core 繼承關(guān)系 另一個(gè)強(qiáng)大的變化,maven帶來(lái)的是項(xiàng)目繼承。主要的設(shè)置: 定義父項(xiàng)目 <project> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging> </project> packaging 類(lèi)型,需要pom用于parent和合成多個(gè)項(xiàng)目。我們需要增加相應(yīng)的值給父pom,用于子項(xiàng)目繼承。主要的元素如下:
<modelVersion>4.0.0</modelVersion> <parent> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent> <artifactId>my-project</artifactId> </project> relativePath可以不需要,但是用于指明parent的目錄,用于快速查詢(xún)。 dependencyManagement: 用于父項(xiàng)目配置共同的依賴(lài)關(guān)系,主要配置依賴(lài)包相同因素,如版本,scope。 合成(或者多個(gè)模塊) 一個(gè)項(xiàng)目有多個(gè)模塊,也叫做多重模塊,或者合成項(xiàng)目。 如下的定義: <project> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <modules> <module>my-project1<module> <module>my-project2<module> </modules> </project> build 設(shè)置 主要用于編譯設(shè)置,包括兩個(gè)主要的元素,build和report build 主要分為兩部分,基本元素和擴(kuò)展元素集合 注意:包括項(xiàng)目build和profile build <project> <!-- "Project Build" contains more elements than just the BaseBuild set --> <build>...</build> <profiles> <profile> <!-- "Profile Build" contains a subset of "Project Build"s elements --> <build>...</build> </profile> </profiles> </project> 基本元素 <build> <defaultGoal>install</defaultGoal> <directory>${basedir}/target</directory> <finalName>${artifactId}-${version}</finalName> <filters> <filter>filters/filter1.properties</filter> </filters> ... </build>
資源(resources) 你項(xiàng)目中需要指定的資源。如spring配置文件,log4j.properties <project> <build> ... <resources> <resource> <targetPath>META-INF/plexus</targetPath> <filtering>false</filtering> <directory>${basedir}/src/main/plexus</directory> <includes> <include>configuration.xml</include> </includes> <excludes> <exclude>**/*.properties</exclude> </excludes> </resource> </resources> <testResources> ... </testResources> ... </build> </project>
在build時(shí),執(zhí)行的插件,比較有用的部分,如使用jdk 5.0編譯等等 <project> <build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.0</version> <extensions>false</extensions> <inherited>true</inherited> <configuration> <classifier>test</classifier> </configuration> <dependencies>...</dependencies> <executions>...</executions> </plugin> </plugins> </build> </project>
<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>echodir</id> <goals> <goal>run</goal> </goals> <phase>verify</phase> <inherited>false</inherited> <configuration> <tasks> <echo>Build Dir: ${project.build.directory}</echo> </tasks> </configuration> </execution> </executions> </plugin> 說(shuō)明:
插件管理 pluginManagement:插件管理以同樣的方式包括插件元素,用于在特定的項(xiàng)目中配置。所有繼承于此項(xiàng)目的子項(xiàng)目都能使用。主要定義插件的共同元素 擴(kuò)展元素集合 主要包括以下的元素: Directories 用于設(shè)置各種目錄結(jié)構(gòu),如下: <build> <sourceDirectory>${basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory> <outputDirectory>${basedir}/target/classes</outputDirectory> <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> ... </build> Extensions 表示需要擴(kuò)展的插件,必須包括進(jìn)相應(yīng)的build路徑。 <project> <build> ... <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ftp</artifactId> <version>1.0-alpha-3</version> </extension> </extensions> ... </build> </project> Reporting 用于在site階段輸出報(bào)表。特定的maven 插件能輸出相應(yīng)的定制和配置報(bào)表。 <reporting> <plugins> <plugin> <outputDirectory>${basedir}/target/site</outputDirectory> <artifactId>maven-project-info-reports-plugin</artifactId> <reportSets> <reportSet></reportSet> </reportSets> </plugin> </plugins> </reporting> Report Sets 用于配置不同的目標(biāo),應(yīng)用于不同的報(bào)表 <reporting> <plugins> <plugin> ... <reportSets> <reportSet> <id>sunlink</id> <reports> <report>javadoc</report> </reports> <inherited>true</inherited> <configuration> <links> <link>http://java./j2se/1.5.0/docs/api/</link> </links> </configuration> </reportSet> </reportSets> </plugin> </plugins> </reporting> 更多的項(xiàng)目信息 name:項(xiàng)目除了artifactId外,可以定義多個(gè)名稱(chēng) description: 項(xiàng)目描述 url: 項(xiàng)目url inceptionYear:創(chuàng)始年份 Licenses <licenses> <license> <name>Apache 2</name> <url>http://www./licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> <comments>A business-friendly OSS license</comments> </license> </licenses> Organization 配置組織信息 <organization> <name>Codehaus Mojo</name> <url>http://mojo.</url> </organization> Developers 配置開(kāi)發(fā)者信息 <developers> <developer> <id>eric</id> <name>Eric</name> <email>eredmond@</email> <url>http://eric.</url> <organization>Codehaus</organization> <organizationUrl>http://mojo.</organizationUrl> <roles> <role>architect</role> <role>developer</role> </roles> <timezone>-6</timezone> <properties> <picUrl>http:///prv4t</picUrl> </properties> </developer> </developers> Contributors <contributors> <contributor> <name>Noelle</name> <email>some.name@gmail.com</email> <url>http://</url> <organization>Noelle Marie</organization> <organizationUrl>http://</organizationUrl> <roles> <role>tester</role> </roles> <timezone>-5</timezone> <properties> <gtalk>some.name@gmail.com</gtalk> </properties> </contributor> </contributors> 環(huán)境設(shè)置 Issue Management 定義相關(guān)的bug跟蹤系統(tǒng),如bugzilla,testtrack,clearQuest等 <issueManagement> <system>Bugzilla</system> <url>http://127.0.0.1/bugzilla</url> </issueManagement> Continuous Integration Management 連續(xù)整合管理,基于triggers或者timings <ciManagement> <system>continuum</system> <url>http://127.0.0.1:8080/continuum</url> <notifiers> <notifier> <type>mail</type> <sendOnError>true</sendOnError> <sendOnFailure>true</sendOnFailure> <sendOnSuccess>false</sendOnSuccess> <sendOnWarning>false</sendOnWarning> <configuration><address>continuum@127.0.0.1</address></configuration> </notifier> </notifiers> </ciManagement> Mailing Lists <mailingLists> <mailingList> <name>User List</name> <subscribe>user-subscribe@127.0.0.1</subscribe> <unsubscribe>user-unsubscribe@127.0.0.1</unsubscribe> <post>user@127.0.0.1</post> <archive>http://127.0.0.1/user/</archive> <otherArchives> <otherArchive>http://base.google.com/base/1/127.0.0.1</otherArchive> </otherArchives> </mailingList> </mailingLists> SCM 軟件配置管理,如cvs 和svn <scm> <connection>scm:svn:http://127.0.0.1/svn/my-project</connection> <developerConnection>scm:svn:https://127.0.0.1/svn/my-project</developerConnection> <tag>HEAD</tag> <url>http://127.0.0.1/websvn/my-project</url> </scm> Repositories 配置同setting.xml中的開(kāi)發(fā)庫(kù) Plugin Repositories 配置同 repositories Distribution Management 用于配置分發(fā)管理,配置相應(yīng)的產(chǎn)品發(fā)布信息,主要用于發(fā)布,在執(zhí)行mvn deploy后表示要發(fā)布的位置 1 配置到文件系統(tǒng) <distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>file://${basedir}/target/deploy</url> </repository> </distributionManagement> 2 使用ssh2配置 <distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>scp://sshserver.yourcompany.com/deploy</url> </repository> </distributionManagement> 3 使用sftp配置 <distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>sftp://ftpserver.yourcompany.com/deploy</url> </repository> </distributionManagement> 4 使用外在的ssh配置 編譯擴(kuò)展用于指定使用wagon外在ssh提供,用于提供你的文件到相應(yīng)的遠(yuǎn)程服務(wù)器。 <distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>scpexe://sshserver.yourcompany.com/deploy</url> </repository> </distributionManagement> <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh-external</artifactId> <version>1.0-alpha-6</version> </extension> </extensions> </build> 5 使用ftp配置 <distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>ftp://ftpserver.yourcompany.com/deploy</url> </repository> </distributionManagement> <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ftp</artifactId> <version>1.0-alpha-6</version> </extension> </extensions> </build> repository 對(duì)應(yīng)于你的開(kāi)發(fā)庫(kù),用戶(hù)信息通過(guò)settings.xml中的server取得 Profiles 類(lèi)似于settings.xml中的profiles,增加了幾個(gè)元素,如下的樣式: <profiles> <profile> <id>test</id> <activation>...</activation> <build>...</build> <modules>...</modules> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <dependencies>...</dependencies> <reporting>...</reporting> <dependencyManagement>...</dependencyManagement> <distributionManagement>...</distributionManagement> </profile> </profiles> |
|
|
來(lái)自: nbtymm > 《項(xiàng)目管理》