自定义项目脚手架- 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:

     对于删除intellij 测试 archetype信息,请参见Intellij修改archetype Plugin配置.

注意:

  • 如果你也需要文件或者目录名字以artifactId生成,则需要用特殊变量__artifactId__(双下划线)作为占位符。

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

作者:破  狼 
出处:http://www.cnblogs.com/whitewolf/ 
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼。http://www.cnblogs.com/whitewolf/p/3606034.html

时间: 2024-10-31 00:38:13

自定义项目脚手架- Maven Archetypes的相关文章

grunt从入门到自定义项目模板

文章还可在我的github上找到,排版更友好一点:grunt从入门到自定义项目模板 一.Grunt入门介绍 1. Grunt是神马 基于任务的命令行构建工具(针对JavaScript项目) 链接:http://gruntjs.com/ 2. 使用Grunt的理由 前端的工具算得上是五花八门,在介绍如何Grunt之前,首先我们得反问自己: Grunt能够帮我们解决什么问题? 是否有其他更合适的替代方案? 3. Grunt能够帮我们解决什么问题? 作为一名开发人员,我们见过了不少功能胡里花哨但并不实

Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart

  之前都是命令行创建,今天用eclipse装m2eclipse的时候装完后创建项目的时候报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories. 解决方式: 1.从http://maven.oschina.net/content/groups/public/org/apache/ma

如何为Web项目添加Maven支持

对现有的项目集成Maven,需要修改以下地方: 1.将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec> 标签下(如果代码存 在,则无须拷贝) <buildCommand> <name>org.maven.ide.eclipse.maven2Builder</name> <arguments></arguments> </buildCommand> 2.将以下代码拷贝到工程根路径下的 .pro

项目集成Maven后JUnit报ClassNotFoundException错误原因及解决方法

前提:原有项目一切运行正常,单元测试正常执行. 项目开始使用Maven管理,结果发现原有的JUnit测试无法执行,类无法找到(java.lang.ClassNotFoundException).无论如何修改Maven配置,报错依然. 分析原因: MyEclipse之所以能识别项目,是根据.project文件解析:而项目的目录结构则是在.classpath文件中定义.MyEclipse的JUnit插件也是根据以上文件来查找源代码和class文件的存放目录.项目集成Maven后,通过执行maven命

项目添加Maven支持后运行JUnit单元测试出现错误

项目添加Maven支持后,运行JUnit单元测试,出现一下错误: ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender]. ch.qos.logback.core.util.DynamicClassLoading

Visual Studio自定义项目或工程模板的用法

在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志.这个时候,是选择在开发的时候手动添加还是自动生成呢? 我们其实完全可以利用 Visual Studio 提供的模板工具自定义一套专属的模板. 自定义项目模板 假如当我添加一个 .cs 文件后,我希望默认添加的文件要看起来像这个样子: 如何实现 1. 随意新建一个工程或使用一个已经存在的工程,在该项目内新添加一个普通的 class 文件,打开后应该和下图长得

Web项目添加Maven支持后的常见bug和错误

最近,对现有的Web项目添加Maven支持,结果出现了好多的bug,只好google查找原因,在此记录下 ,给自己和他人一个方便: 1.Maven命令执行失败,却没有出错信息  --> 可重新执行一次! 2.BaseConst.java:[1,0] 非法字符:\65279  --> 使用 notepad++ 工具打开之后,发现该文件格式为 UTF-8 (含BOM)格式,如下图: 开发常见bug"> 改为"UTF-8 无 BOM格式编码"即可. 分析:有可能是

Word入门动画教程119:自定义项目符号

添加项目符号后,如果对其格式不满意,可以进行自定义修改.方法为:先选定这些要重新设置的段 落(当然,也可以直接对未设置项目符号的段落进行如下操作),再执行"格式 "→"项目符号和编号"→"项目符号"选项卡,单击"自 定义"按钮,打开"自定义项目符号列表"对话框,在此对话框中,有以下项目: "项目符号字符":显示了最近使用过的6种自定义项目符号,以供用户选择. "字体"

自定义项目符号

添加项目符号后,如果对其格式不满意,可以进行自定义修改.方法为:先选定这些要重新设置的段落(当然,也可以直接对未设置项目符号的段落进行如下操作),再执行"格式"→"项目符号和编号"→"项目符号"选项卡,单击"自定义"按钮,打开"自定义项目符号列表"对话框,在此对话框中,有以下项目: "项目符号字符":显示了最近使用过的6种自定义项目符号,以供用户选择. "字体":单击