• maven archetype 自定义模板工程


      自定义模板工程原理:利用maven插件archetype,将源工程生成为archetype工程,即模板工程,生成模板工程的过程中将指定字符串或文件名替换为占位符,然后将这个模板工程发布到本地仓库或私服仓库,就可以在创建工程的时候引用这个模板工程,给占位符赋值,生成新的工程,主要以下三步:

      1,根据源工程生成模板工程:

    mvn archetype:create-from-project

      2,发布模板工程:

    mvn clean install 或 mvn clean deploy
    

      3,根据模板工程创建新工程:

    archetype:generate -DarchetypeGroupId="..." -archetypeArtifactId="..." -DarchetypeVersion="..."

      具体步骤如下:

    一、准备好源工程,在pom.xml里配置archetype插件,指定archetype.properties配置文件,yml文件默认不会替换占位符,需要用archetypeFilteredExtentions标签配置表示替换,如果还有其它的,用逗号分隔;

    二、在源工程根目录下创建配置文件archetype.properties,根据需要设置属性,在这里我自定义一个属性customProperty=Abc;

    三、然后在根目录下运行mvn archetype:create-from-project命令,运行成功后,在target/generated-sources下会生成一个archetype项目,项目内容如下图。

        1.可以看到包路径没有了,这是因为默认有个属性package=包路径没有分支的最深路径,即在这个项目里package=com.archetypedemo.www如果想自定义,可以在前面的archetype.properties里指定package的值。

        2.原来的Abc.java文件名被替换为__customProperty__.java,aaaAbc.xml被替换为aaa__customProperty__.xml;

        3.文件内容里得Abc字符串全被替换为${customProperty};

        4.archetype-metadata.xml则是配置描述,里面可以看到我们自定义的属性customProperty,默认值是Abc,可以把defaultValue这个标签删掉,后面新建工程的时候自己指定,也可以不删;

    四、在archetype目录下打开cmd,运行mvn clean install或mvn clean deploy,发布到本地或私服,发布到私服需要在archetype的pom里添加私服deploy配置,配置方法自行度娘,发布成功后,则可以根据这个发布的GAV创建新工程了,发布后得模板工程GAV可以在archetype工程的pom.xml里查看,也可以在发布时的打印信息里看到;

    五、在需要创建新工程的目录下打开cmd,运行archetype:generate -DarchetypeGroupId="..." -archetypeArtifactId="..." -DarchetypeVersion="...",省略号是模板工程的GAV,然后会要求我们输入GAV和自定义属性的值,最后确认回车,就会生成新的工程。如果自定义属性在第三步的archetype-metadata.xml中设置了默认值,这里会直接设置成默认值跳过输入,如果想修改的话,可以在最后确认的那一步,输入N回车,则会让我们重新输入所有属性值。

        分别输入值,由于之前archetype-metadata.xml里没有把customProperty的默认值删掉,这里直接赋值为Abc跳过了,想要修改的话,在最后一步Y确认的地方输N拒绝,则重新输入所有字段的值;

     

        最后看我们生成的工程,模板工程的占位符都已替换为我们创建工程时指定的值了

  • 相关阅读:
    0X03异常错误处理
    (组合数学)AtCoder Grand Contest 019 F
    (NTT)AtCoder Grand Contest 019 E
    (dp)AtCoder Grand Contest 019 D
    (dp)AtCoder Regular Contest 081 E
    (最小费用流)hdu 6118(2017百度之星初赛B 1005) 度度熊的交易计划
    (容斥)Codeforces Round #428 (Div. 2) D. Winter is here
    (最大团)Codeforces Round #428 (Div. 2) E. Mother of Dragons
    (FFT)HDU 6088(2017 多校第5场 1004)Rikka with Rock-paper-scissors
    近期部分题目汇总
  • 原文地址:https://www.cnblogs.com/xzhuo0827/p/12582154.html
Copyright © 2020-2023  润新知