自定義項目腳手架- Maven Archetypes


在上篇Intellij修改archetype Plugin配置 中我們已經簡單介紹了關於archetype的作用。

簡單來說maven archetype插件就是創建項目的腳手架,你可以通過命令行或者IDE集成簡化項目創建的工作。例如:

  • org.apache.maven.archetypes:maven-archetype-quickstart
  • org.apache.maven.archetypes:maven-archetype-site
  • org.apache.maven.archetypes:maven-archetype-webapp
  • 以及spring或者第三方提供了一些archetype plugin。

同時maven archetype插件也是一個簡單的maven artifact,它包含了創建項目所需要的所有資源。 主要分為幾類原型信息:

  • archetype描述文件(src/main/resources/META-INF/maven/archetype.xml),這為archetype 1.0, 包含所有創建項目的文件信息和路徑信息。在(archetype 2.0)[http://maven.apache.org/archetype/maven-archetype-plugin/]增加了更靈活的archetype-metadata.xml(src/main/resources/META-INF/maven/下), archetype元數據信息,並且完全支持1.0.
  • 項目的原型文件(src/main/resources/archetype-resources/之下),將會被archetype插件 copy到項目目錄結構去。
  • 創建項目的pom文件(src/main/resources/archetype-resources下)
  • archetype pom文件,在archetype項目根目錄下。

創建archetype插件

  1. 首先在archetype中加入一個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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>com.github.greengerong</groupId>
          <artifactId>component</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>jar</packaging>
    
          <name>component</name>
          <url>http://maven.apache.org</url>
    
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          </properties>
    
          <dependencies>
          </dependencies>
    </project>

     

  2. 創建archetype-metadata.xml,位於src/main/resources/META-INF/maven/目錄下,例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <archetype-descriptor name="app-server">
        <fileSets>
            <fileSet filtered="true" encoding="UTF-8">
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.**</include>
                </includes>
            </fileSet>
            <fileSet filtered="true" encoding="UTF-8">
                <directory>src/test/java</directory>
                <includes>
                    <include>**/*.**</include>
                </includes>
            </fileSet>
        </fileSets>
    </archetype-descriptor>

     

更多配置信息參考archetype-descriptor.

  1. 為將創建的項目增加pom.xml文件,以${artifactId} / ${groupId} 變量作為占位符,例如:

    <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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>${groupId}</groupId>
          <artifactId>${artifactId}</artifactId>
          <version>${version}</version>
          <packaging>jar</packaging>
    
          <name>${artifactId}</name>
    
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          </properties>
    
          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.11</version>
                  <scope>test</scope>
              </dependency>
          </dependencies>
    
          <build>
              <pluginManagement>
                  <plugins>
                      <plugin>
                          <artifactId>maven-compiler-plugin</artifactId>
                          <configuration>
                              <source>1.6</source>
                              <target>1.6</target>
                          </configuration>
                      </plugin>
                  </plugins>
              </pluginManagement>
          </build>
      </project>

     

  2. 接下來在archetype項目下install plugin:mvn clean install.

  3. 利用已有acrchetype plugin創建項目:

    命令行:

    mvn archetype:generate -DarchetypeGroupId=<archetype-groupId>  -DarchetypeArtifactId=<archetype-artifactId> -DarchetypeVersion=<archetype-version>  -DgroupId=<my.groupid> -DartifactId=<my-artifactId>

          Intellij選擇增加archetype plugin:

/images/blog_img/Intellij-archetype-plugin.png

     對於刪除intellij 測試 archetype信息,請參見Intellij修改archetype Plugin配置.

注意:

  • 如果你也需要文件或者目錄名字以artifactId生成,則需要用特殊變量__artifactId__(雙下划線)作為占位符。

     本文demo,請移到到github maven-archetypes-demo.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM