Maven创建自己的工程

1、找到模板项目

     删掉.idea文件夹

2、在项目目录下执行

mvn archetype:create-from-project

3、找到生成出的模板

cd到target/generated-sources/archetype

4、修改文件

(1)修改你这个archetype的target/generated-sources/archetype/pom.xml

配置

<groupId>com.scipio</groupId>
  <artifactId>app-scaffold-archetype</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>maven-archetype</packaging>
  <name>app-scaffold-archetype</name>


(2)修改archetype-metadata

在目录target/generated-sources/archetype/src/main/resources/META-INF/maven/atchetype-metadata.xml

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="app-scaffold"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <requiredProperties> 
        <requiredProperty key="groupId"> 
            <defaultValue>com.scipio</defaultValue> 
        </requiredProperty> 
        <requiredProperty key="artifactId"> 
            <defaultValue>myapp</defaultValue> 
        </requiredProperty> 
        <requiredProperty key="package"> 
            <defaultValue>com.scipio.myapp</defaultValue> 
        </requiredProperty> 
    </requiredProperties>

  <fileSets>
    <fileSet encoding="UTF-8">
      <directory></directory>
      <includes>
        <include>.gitignore</include>
      </includes>
    </fileSet>
  </fileSets>
  <modules>
    <module id="${artifactId}-web" dir="app-web" name="app-web">
      <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
        <fileSet filtered="true" encoding="UTF-8">
          <directory>src/main/webapp</directory>
          <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
          </includes>
        </fileSet>
        <fileSet filtered="true" encoding="UTF-8">
          <directory>src/main/resources</directory>
          <includes>
            <include>**/*.xml</include>
          </includes>
        </fileSet>
        <fileSet encoding="UTF-8">
          <directory>src/main/webapp</directory>
          <includes>
            <include>**/*.inc</include>
            <include>**/*.js</include>
            <include>**/*.ftl</include>
            <include>**/*.css</include>
          </includes>
        </fileSet>
        <fileSet encoding="UTF-8">
          <directory>src/main/resources</directory>
          <includes>
            <include>**/*.sql</include>
            <include>**/*.ftl</include>
          </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/test/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
        <fileSet encoding="UTF-8">
          <directory></directory>
          <includes>
            <include>.gitignore</include>
          </includes>
        </fileSet>
      </fileSets>
    </module>
    <module id="${artifactId}-remote-service" dir="app-remote-service" name="app-remote-service">
      <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/test/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
      </fileSets>
    </module>
  </modules>
</archetype-descriptor>


(3)修改两个模块的名称,与配置文件的dir对应

   比如app-web,app-remote-service


(4)修改母project的pom.xml

在archetype/src/main/resources/archetype-resources/pom.xml

修改名称

    <groupId>${groupId}</groupId>
    <artifactId>${artifactId}</artifactId>
    <version>${version}</version>
    <packaging>pom</packaging>
    <name>${artifactId}</name>
    <url>http://maven.apache.org</url>


配上相应的子模块

<modules>
   <module>${artifactId}-remote-service</module>
   <module>${artifactId}-web</module>
</modules>


(5)修改子模块的pom.xml

app-remote-service

<parent>
        <artifactId>${rootArtifactId}</artifactId>
        <groupId>${groupId}</groupId>
        <version>${version}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>${rootArtifactId}-remote-service</artifactId>

    <packaging>jar</packaging>
    <name>${rootArtifactId}-remote-service</name>
    <version>${version}</version>

app-web

   <parent>
        <artifactId>${rootArtifactId}</artifactId>
        <groupId>${groupId}</groupId>
        <version>${version}</version>
        <relativePath>..</relativePath>
    </parent>
    <artifactId>${rootArtifactId}-web</artifactId>
    <version>${version}</version>
    <packaging>war</packaging>
    <name>${rootArtifactId}-web</name>
    <url>http://maven.apache.org</url>


5、安装

mvn clean package install (本地安装)

mvn clean package deploy (远程安装)


6、本地使用

  切换到其他目录(该目录不能有pom.xml文件)

mvn archetype:generate -DarchetypeCatalog=local

选择本地的那个app-scaffold

然后按提示输入变量,artifactId默认是myapp,自己在confirm时按N,然后自己修改

最后就生成出来了


7、部署你的archetype

在arget/generated-sources/archetype目录下

修改pom.xml

在project节点下增加maven服务器

<distributionManagement>
    <repository>
      <id>scipio-nexus-releases</id>
      <name>Scipio Nexus Repository</name>
      <url>http://nexus.scipio.com:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>scipio-nexus-snapshots</id>
      <name>Scipio Nexus Repository</name>
      <url>http://nexus.scipio.com:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

mvn clean package deploy


8、使用该archetype
mvn archetype:generate -DgroupId=com.scipio -DartifactId=myapp -Dpackage=com.scipio.myapp -DarchetypeGroupId=com.scipio -DarchetypeArtifactId=mtapp-scaffold-archetype


参考:

http://numberformat.wordpress.com/2009/11/15/creating-a-new-maven-archetype-and-publishing-it-to-nexus/

http://www.shenyanchao.cn/blog/2013/05/21/use-maven-archetype-to-generate-project-architecture/

http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html


转载于:https://my.oschina.net/scipio/blog/288104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值