Maven繼承

父pom配置:
<packaging>pom</packaging>
在父pom中配置依賴管理和插件管理
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>java

 <groupId>cxxcode.maven</groupId>
 <artifactId>account-parent</artifactId>
 <packaging>pom</packaging>
 <version>0.0.1</version>
 <name>Account Parent</name>
 <url>http://maven.apache.org</url>spring

 <properties>
  <spring-version>2.5.6</spring-version>
  <junit-version>4.7</junit-version>
  <mail-version>1.4.1</mail-version>
  <greenmail-version>1.3.1b</greenmail-version>
  <dom4j-version>1.6.1</dom4j-version>
  <surefire-version>2.5</surefire-version>
 </properties>apache


 <!--
  依賴管理dependencyManagement
   假設不使用依賴管理。子pom會繼承父pom中配置的所有依賴,子pom中僅僅需配置本身特需的依賴便可了,
   這樣儘管簡化了子pom的配置。但是強制性給子pom加上多餘的依賴。
   
   使用依賴管理,子pom中要配置本身需要的依賴。假設這些依賴在父pom中配置了,
   子pom僅僅需指定這些依賴的groupId和artifactId
   
   
  依賴管理的導入
   將proj-A中的依賴管理導入此pom的依賴管理中
   
   <scope>import</scope>僅僅用在依賴管理配置中。且<type>pom</type>
  
   <dependencyManagement>
    <dependencies>
     <dependency>
      <groupId>cxxcode.mave</groupId>
      <artifactId>proj-A</artifactId>
      <version>0.0.1</version>
      <type>pom</type>
      <scope>import</scope>
     </dependency>
    </dependencies>
   </dependencyManagement>
 -->
 <dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring-version}</version>
   </dependency>
   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring-version}</version>
   </dependency>
   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring-version}</version>
   </dependency>
   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring-version}</version>
   </dependency>
   <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>${mail-version}</version>
   </dependency>xcode

   <dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>${dom4j-version}</version>
   </dependency>dom

   <dependency>
    <groupId>com.icegreen</groupId>
    <artifactId>greenmail</artifactId>
    <version>${greenmail-version}</version>
    <scope>test</scope>
   </dependency>
   <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit-version}</version>
    <scope>test</scope>
   </dependency>
  </dependencies>
 </dependencyManagement>
 
 <build>
  <!-- 插件管理pluginManagement -->
  <pluginManagement>
   <plugins>
    <!-- 編譯插件 -->
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <configuration>
      <source>1.5</source>
      <target>1.5</target>
      <fork>true</fork><!-- true贊成改動jdk編碼版本號 -->
      <encoding>UTF-8</encoding>
      <!-- 跳過測試編譯
      <skip>false</skip> -->
     </configuration>
    </plugin>
    
    <!-- 生成源代碼jar -->
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-source-plugin</artifactId>
     <executions>
      <execution>
       <phase>verify</phase>
       <goals>
        <goal>jar-no-fork</goal>
       </goals>
      </execution>
     </executions>
    </plugin>
    
    <!-- 複製主資源文件到主輸出文件夾 -->
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-resources-plugin</artifactId>
     <configuration>
      <encoding>UTF-8</encoding>
     </configuration>
    </plugin>
    
    <!-- 測試插件 -->
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>${surefire-version}</version>
     <configuration>
      <!-- 跳過測試
      <skip>true</skip> -->
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
 </build>
</project>
==================================maven

子pomui

<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <!-- 獨本身定義
 <groupId>cxxcode.maven</groupId>
 <artifactId>account-email</artifactId>
 <packaging>jar</packaging>
 <version>0.0.1</version>
 <name>Account Email</name>
  -->
 
 <!--
  parent
  繼承父pom
   子pom的groupId、version、依賴等信息繼承父pom
   relativePath 父pom的位置。默認../pom.xml
   
  可繼承的pom元素
   groupId   項目組Id
   version   項目版本號
   description  項目描寫敘述
   organization 項目的組織信息
   inceptionYear 項目的建立年份
   url    項目的url
   developers  項目的開發人員
   contributors 項目的貢獻者
   distributionManagement 項目的部署配置
   issueManagement 項目的缺陷跟蹤系統信息
   ciManagement 項目的持續繼承系統信息
   scm    項目的版本號控制系統信息
   mailingLists 項目的郵件列表信息
   properties  本身定義的maven屬性
   dependencies 項目的依賴配置
   dependencyManagement 項目的依賴管理配置
   repositories 項目的倉庫配置
   build   包含項目的源代碼文件夾配置,輸出文件夾配置、插件配置、插件管理配置等
   reporting  包含項目的報告輸出文件夾配置、報告插件配置等
   
  -->
 <artifactId>account-email</artifactId>
 <packaging>jar</packaging>
 <name>Account Email</name>
 
 <parent>
  <groupId>cxxcode.maven</groupId>
  <artifactId>account-parent</artifactId>
  <version>0.0.1</version>
  <relativePath>../CXXMaven_AccountParent/pom.xml</relativePath>
 </parent>編碼

 <dependencies>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-beans</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context-support</artifactId>
  </dependency>
  <dependency>
   <groupId>javax.mail</groupId>
   <artifactId>mail</artifactId>
  </dependency>
  <dependency>
   <groupId>com.icegreen</groupId>
   <artifactId>greenmail</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
  </dependency>url

 </dependencies>
 <build>
  <plugins>
   <!-- 編譯插件 -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
   </plugin>插件

   <!-- 生成可執行的jar -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>shade</goal>
      </goals>
      <configuration>
       <transformers>
        <transformer
     implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
         <mainClass>
          com.cxx.maven.App
         </mainClass>
        </transformer>
       </transformers>
      </configuration>
     </execution>
    </executions>
   </plugin>

   <!-- 生成源代碼jar -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
   </plugin>
  </plugins>
 </build>

</project>

相關文章
相關標籤/搜索