<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    pom作為項目對象模型。通過xml表示maven項目,使用pom.xml來實現。主要描述了項目:包括配置文件;開發者需要遵循的規則,缺陷管理系統,組織和licenses,項目的url,項目的依賴性,以及其他所有的項目相關因素。
    快速察看:
    Java代碼 復制代碼
    1. <project> ??
    2. ????<modelVersion>4.0.0</modelVersion> ??
    3. ??
    4. ????<!--?The?Basics?--> ??
    5. ????<groupId>...</groupId> ??
    6. ????<artifactId>...</artifactId> ??
    7. ????<version>...</version> ??
    8. ????<packaging>...</packaging> ??
    9. ????<dependencies>...</dependencies> ??
    10. ????<parent>...</parent> ??
    11. ????<dependencyManagement>...</dependencyManagement> ??
    12. ????<modules>...</modules> ??
    13. ????<properties>...</properties> ??
    14. ??
    15. ????<!--?Build?Settings?--> ??
    16. ????<build>...</build> ??
    17. ????<reporting>...</reporting> ??
    18. ??
    19. ????<!--?More?Project?Information?--> ??
    20. ????<name>...</name> ??
    21. ????<description>...</description> ??
    22. ????<url>...</url> ??
    23. ????<inceptionYear>...</inceptionYear> ??
    24. ????<licenses>...</licenses> ??
    25. ????<organization>...</organization> ??
    26. ????<developers>...</developers> ??
    27. ????<contributors>...</contributors> ??
    28. ??
    29. ????<!--?Environment?Settings?--> ??
    30. ????<issueManagement>...</issueManagement> ??
    31. ????<ciManagement>...</ciManagement> ??
    32. ????<mailingLists>...</mailingLists> ??
    33. ????<scm>...</scm> ??
    34. ????<prerequisites>...</prerequisites> ??
    35. ????<repositories>...</repositories> ??
    36. ????<pluginRepositories>...</pluginRepositories> ??
    37. ????<distributionManagement>...</distributionManagement> ??
    38. ????<profiles>...</profiles> ??
    39. </project>??
    ?

    ?

    ?

    ?

    ?

    ?

    ?

    Java代碼 復制代碼
    1. <!--?The?Basics?--> ??
    2. ????<groupId>...</groupId> ??
    3. ????<artifactId>...</artifactId> ??
    4. ????<version>...</version> ??
    5. ????<packaging>...</packaging> ??
    6. ????<dependencies>...</dependencies> ??
    7. ????<parent>...</parent> ??
    8. ????<dependencyManagement>...</dependencyManagement> ??
    9. ????<modules>...</modules> ??
    10. ????<properties>...</properties>??
    ?



    基本內容:
    ????POM包括了所有的項目信息。
    maven?相關:
    pom定義了最小的maven2元素,允許groupId,artifactId,version。所有需要的元素

    groupId:項目或者組織的唯一標志,并且配置時生成的路徑也是由此生成,如org.codehaus.mojo生成的相對路徑為:/org/codehaus/mojo?
    artifactId:?項目的通用名稱?
    version:項目的版本?
    packaging:?打包的機制,如pom,?jar,?maven-plugin,?ejb,?war,?ear,?rar,?par?
    classifier:?分類
    POM關系:
    主要為依賴,繼承,合成
    ??依賴關系:
    ??<dependencies>
    ????<dependency>
    ??????<groupId>junit</groupId>
    ??????<artifactId>junit</artifactId>
    ??????<version>4.0</version>
    ??????<type>jar</type>
    ??????<scope>test</scope>
    ??????<optional>true</optional>
    ????</dependency>
    ????...
    ??</dependencies>

    groupId,?artifactId,?version:描述了依賴的項目唯一標志
    可以通過以下方式進行安裝:

    使用以下的命令安裝:?
    mvn?install:install-file??Dfile=non-maven-proj.jar??DgroupId=some.group??DartifactId=non-maven-proj??Dversion=1?
    創建自己的庫,并配置,使用deploy:deploy-file?
    設置此依賴范圍為system,定義一個系統路徑。不提倡。
    type:相應的依賴產品包形式,如jar,war?
    scope:用于限制相應的依賴范圍,包括以下的幾種變量:
    compile?:默認范圍,用于編譯?
    provided:類似于編譯,但支持你期待jdk或者容器提供,類似于classpath?
    runtime:在執行時,需要使用?
    test:用于test任務時使用?
    system:需要外在提供相應得元素。通過systemPath來取得
    systemPath:?僅用于范圍為system。提供相應的路徑?
    optional:?標注可選,當項目自身也是依賴時。用于連續依賴時使用
    ???獨占性????
    ???外在告訴maven你只包括指定的項目,不包括相關的依賴。此因素主要用于解決版本沖突問題
    ??<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>
    表示項目maven-embedder需要項目maven-core,但我們不想引用maven-core

    繼承關系
    ????另一個強大的變化,maven帶來的是項目繼承。主要的設置:
    定義父項目
    <project>
    ??<modelVersion>4.0.0</modelVersion>
    ??<groupId>org.codehaus.mojo</groupId>
    ??<artifactId>my-parent</artifactId>
    ??<version>2.0</version>
    ??<packaging>pom</packaging>
    </project>
    ????packaging?類型,需要pom用于parent和合成多個項目。我們需要增加相應的值給父pom,用于子項目繼承。主要的元素如下:

    依賴型?
    開發者和合作者?
    插件列表?
    報表列表?
    插件執行使用相應的匹配ids?
    插件配置?
    子項目配置
    <project>
    ??<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的目錄,用于快速查詢。

    dependencyManagement:
    用于父項目配置共同的依賴關系,主要配置依賴包相同因素,如版本,scope。

    合成(或者多個模塊)
    ????一個項目有多個模塊,也叫做多重模塊,或者合成項目。
    如下的定義:
    <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>

    ?

    ?

    ?

    ?

    Java代碼 復制代碼
    1. <!--?Build?Settings?--> ??
    2. ????<build>...</build> ??
    3. ????<reporting>...</reporting>??
    ?


    build?設置
    ????主要用于編譯設置,包括兩個主要的元素,build和report
    ??build
    ????主要分為兩部分,基本元素和擴展元素集合
    注意:包括項目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>


    defaultGoal:?定義默認的目標或者階段。如install?
    directory:?編譯輸出的目錄?
    finalName:?生成最后的文件的樣式?
    filter:?定義過濾,用于替換相應的屬性文件,使用maven定義的屬性。設置所有placehold的值

    資源(resources)
    ????你項目中需要指定的資源。如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>


    resources:?resource的列表,用于包括所有的資源?
    targetPath:?指定目標路徑,用于放置資源,用于build?
    filtering:?是否替換資源中的屬性placehold?
    directory:?資源所在的位置?
    includes:?樣式,包括那些資源?
    excludes:?排除的資源?
    testResources:?測試資源列表
    插件
    ??在build時,執行的插件,比較有用的部分,如使用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>

    extensions:?true?or?false,是否裝載插件擴展。默認false?
    inherited:?true?or?false,是否此插件配置將會應用于poms,那些繼承于此的項目?
    configuration:?指定插件配置?
    dependencies:?插件需要依賴的包?
    executions:?用于配置execution目標,一個插件可以有多個目標。
    如下:
    ????<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>
    ??說明:

    id:規定execution?的唯一標志?
    goals:?表示目標?
    phase:?表示階段,目標將會在什么階段執行?
    inherited:?和上面的元素一樣,設置false?maven將會拒絕執行繼承給子插件?
    configuration:?表示此執行的配置屬性

    插件管理
    ????pluginManagement:插件管理以同樣的方式包括插件元素,用于在特定的項目中配置。所有繼承于此項目的子項目都能使用。主要定義插件的共同元素

    擴展元素集合
    主要包括以下的元素:
    Directories
    用于設置各種目錄結構,如下:
    ??<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

    表示需要擴展的插件,必須包括進相應的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階段輸出報表。特定的maven?插件能輸出相應的定制和配置報表。
    ??<reporting>
    ????<plugins>
    ??????<plugin>
    ????????<outputDirectory>${basedir}/target/site</outputDirectory>
    ????????<artifactId>maven-project-info-reports-plugin</artifactId>
    ????????<reportSets>
    ??????????<reportSet></reportSet>
    ????????</reportSets>
    ??????</plugin>
    ????</plugins>
    ??</reporting>

    Report?Sets
    ????用于配置不同的目標,應用于不同的報表
    <reporting>
    ????<plugins>
    ??????<plugin>
    ????????...
    ????????<reportSets>
    ??????????<reportSet>
    ????????????<id>sunlink</id>
    ????????????<reports>
    ??????????????<report>javadoc</report>
    ????????????</reports>
    ????????????<inherited>true</inherited>
    ????????????<configuration>
    ??????????????<links>
    ????????????????<link>http://java.sun.com/j2se/1.5.0/docs/api/</link> ;
    ??????????????</links>
    ????????????</configuration>
    ??????????</reportSet>
    ????????</reportSets>
    ??????</plugin>
    ????</plugins>
    ??</reporting>

    ?

    ?

    ?

    ?

    ?

    Java代碼 復制代碼
    1. <!--?More?Project?Information?--> ??
    2. ????<name>...</name> ??
    3. ????<description>...</description> ??
    4. ????<url>...</url> ??
    5. ????<inceptionYear>...</inceptionYear> ??
    6. ????<licenses>...</licenses> ??
    7. ????<organization>...</organization> ??
    8. ????<developers>...</developers> ??
    9. ????<contributors>...</contributors>??
    ?


    更多的項目信息
    name:項目除了artifactId外,可以定義多個名稱
    description:?項目描述
    url:?項目url
    inceptionYear:創始年份

    Licenses
    <licenses>
    ??<license>
    ????<name>Apache?2</name>
    ????<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> ;
    ????<distribution>repo</distribution>
    ????<comments>A?business-friendly?OSS?license</comments>
    ??</license>
    </licenses>

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    Java代碼 復制代碼
    1. <!--?Environment?Settings?--> ??
    2. <issueManagement>...</issueManagement> ??
    3. <ciManagement>...</ciManagement> ??
    4. <mailingLists>...</mailingLists> ??
    5. <scm>...</scm> ??
    6. <prerequisites>...</prerequisites> ??
    7. <repositories>...</repositories> ??
    8. <pluginRepositories>...</pluginRepositories> ??
    9. <distributionManagement>...</distributionManagement> ??
    10. <profiles>...</profiles>??
    ?


    Organization
    配置組織信息
    ??<organization>
    ????<name>Codehaus?Mojo</name>
    ????<url>http://mojo.codehaus.org</url> ;
    ??</organization>

    Developers
    配置開發者信息
    <developers>
    ????<developer>
    ??????<id>eric</id>
    ??????<name>Eric</name>
    ??????<email>eredmond@codehaus.org</email>
    ??????<url>http://eric.propellors.net</url> ;
    ??????<organization>Codehaus</organization>
    ??????<organizationUrl>http://mojo.codehaus.org</organizationUrl> ;
    ??????<roles>
    ????????<role>architect</role>
    ????????<role>developer</role>
    ??????</roles>
    ??????<timezone>-6</timezone>
    ??????<properties>
    ????????<picUrl>http://tinyurl.com/prv4t</picUrl> ;
    ??????</properties>
    ????</developer>
    ??</developers>

    Contributors
    ??<contributors>
    ????<contributor>
    ??????<name>Noelle</name>
    ??????<email>some.name@gmail.com</email>
    ??????<url>http://noellemarie.com</url> ;
    ??????<organization>Noelle?Marie</organization>
    ??????<organizationUrl>http://noellemarie.com</organizationUrl> ;
    ??????<roles>
    ????????<role>tester</role>
    ??????</roles>
    ??????<timezone>-5</timezone>
    ??????<properties>
    ????????<gtalk>some.name@gmail.com</gtalk>
    ??????</properties>
    ????</contributor>
    ??</contributors>

    環境設置

    Issue?Management
    ????定義相關的bug跟蹤系統,如bugzilla,testtrack,clearQuest等
    ??<issueManagement>
    ????<system>Bugzilla</system>
    ????<url>http://127.0.0.1/bugzilla</url> ;
    ??</issueManagement>
    Continuous?Integration?Management
    連續整合管理,基于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中的開發庫

    Plugin?Repositories
    配置同?repositories

    Distribution?Management
    用于配置分發管理,配置相應的產品發布信息,主要用于發布,在執行mvn?deploy后表示要發布的位置
    1?配置到文件系統
    <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配置
    ????編譯擴展用于指定使用wagon外在ssh提供,用于提供你的文件到相應的遠程服務器。
    <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?對應于你的開發庫,用戶信息通過settings.xml中的server取得

    Profiles
    類似于settings.xml中的profiles,增加了幾個元素,如下的樣式:
    ??<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>

    posted on 2010-05-03 16:55 禮物 閱讀(1543) 評論(0)  編輯  收藏 所屬分類: Maven2
    主站蜘蛛池模板: 亚洲成年看片在线观看| 亚洲校园春色小说| 在线看无码的免费网站| 亚洲第一成人在线| 亚洲成A人片77777国产| 8x网站免费入口在线观看| 亚洲国产精品日韩av不卡在线| 国产亚洲av片在线观看18女人| 最近中文字幕国语免费完整| 亚洲色大18成人网站WWW在线播放| 亚洲人AV永久一区二区三区久久| 99re6在线精品视频免费播放| 日韩欧美亚洲中文乱码| 久久亚洲一区二区| 日韩一级在线播放免费观看| 免费观看91视频| 亚洲精华国产精华精华液网站| 91麻豆精品国产自产在线观看亚洲| 亚洲成人免费电影| 免费人成再在线观看网站 | 久久成人国产精品免费软件| 日本免费精品一区二区三区 | 亚洲人成在线播放| 久久久久无码专区亚洲av| 成全视频免费高清| 精品无码国产污污污免费网站| 免费看一级高潮毛片| 国产亚洲sss在线播放| 亚洲AV无码一区二区三区DV| 在线免费观看韩国a视频| 亚洲网站在线免费观看| 中文字幕视频在线免费观看| 国产区图片区小说区亚洲区| 亚洲一本之道高清乱码| 亚洲人成网站在线播放影院在线 | 亚洲精品综合久久中文字幕| 久久久久无码专区亚洲av| 四虎影在线永久免费观看| 免费无码AV片在线观看软件| 99久久99热精品免费观看国产| 抽搐一进一出gif免费视频|