博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven 自定义 archetype
阅读量:6114 次
发布时间:2019-06-21

本文共 3053 字,大约阅读时间需要 10 分钟。

    最近在公司经常要写一些 storm-job 工程的骨架(archetype)非常相似,为了能够将大家的工程结构固定下来以及节约建工程的成本,所以给组内自定义了maven-archetype,中途遇到了一些坑。

一、archetype工程

这里记录一下.首先archetype本身就是一个Maven工程,所以需要按照Maven工程的基本结构构建工程。如图-1所示

 
archetype|-- pom.xml`-- src    `-- main        `-- resources            |-- META-INF            |   `-- maven            |       `--archetype-metadata.xml            `-- archetype-resources                |-- pom.xml                `-- src                    |-- main                    |   `-- java                    |       `-- App.java                    `-- test                        `-- java                            `-- AppTest.java

                                     图-1 archetype工程结构

其中 archetype-metadata.xml文件的作用是为了描述,根据此骨架生成的工程应该包含的文件,具体设置如下:

 
src/main/java
**/*.**
src/main/resources
**/*.xml
**/**
src/test/java
**/*.**
.**

二、主要遇到的问题有

1. 为了能够规范工程各个模块,需要在新工程中包含部分空包(empty package)

   需要在archetype工程根目录下面的pom.xml (archetype/pom.xml)的文件中,通过增加maven-resource-plugin,并且设置<includeEmptyDirs>true</includeEmptyDirs>将空文件夹打包进工程中。

 
org.apache.maven.plugins
maven-resources-plugin
2.3
true

2. 怎么能够在新建工程中生成 groupID的结构,比如:gourpId: com.company.group.test,应该生成 com/company/group/test 的文件结构,并且在目录里面的 java文件的 package com.company.group.test;

archetype
|-- pom.xml`-- src    `-- main        `-- resources            |-- META-INF            |   `-- maven            |       `--archetype-metadata.xml            `-- archetype-resources                |-- pom.xml                `-- src                    |-- main                    |   `-- java                    |       `—__packageInPathFormat__(groupId)
|          `—__artifactId__ (artifactId)
|            `— 包名                     `-- test                        `-- java                            `-- AppTest.java

其中_ _packageInPathFormat_ _ 为双下划线,表示gruopId。

3. 包中java 文件的 package 能够根据groupId生成?

#set( $symbol_pound = '#' )#set( $symbol_dollar = '$' )#set( $symbol_escape = '\' )package ${
package}.${artifactId}.app;public class App{ public static void main(String[] args) { System.out.println("Hello Muise Job"); } }

最后只要配置maven-archetype 发布地址,mvn deploy将响应的工程发布即可。

参考文献:

1.

转载于:https://www.cnblogs.com/felixpan/p/5910598.html

你可能感兴趣的文章
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
ViewPager切换动画PageTransformer使用
查看>>
coco2d-x 基于视口的地图设计
查看>>
C++文件读写详解(ofstream,ifstream,fstream)
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>