`

用eclipse编写自定义archetype

阅读更多

archetype:翻译成原型,其实就是我们所谓的脚手架。

maven已经给我们提供了很多archetype,但很多时候我们还需要自己手工去做属于自己的个性化archetype。

 

1、做一个maven工程(model-project)(包括了工具类,配置文件,等),我们的目标是通过自定义的archetype可以生成这个工程的样子。

2、右键工程model-project  run as 运行命令:archetype:create-from-project,该命令会生成/target/generated-sources/archetype代码。

3、新建一个普通java工程template,右键configure--->conver to maven 填写上maven坐标,删除src目录,备份pom.xml。

4、把第2步生成的/target/generated-sources/archetype下面的代码都copy到template工程中,覆盖原有代码,修改pom.xml中的坐标为备份中的坐标,同时必面把version中的SNAPSHOT去掉,保证不是快照才能在后面看到该archetype。

5、install template工程。

6、这里新建工程时,在default local 中就能选中刚才我们自己定义的archetype了。

 

注意:有时需要修改/src/main/resources/META-INF/maven/archetype-metadata.xml该文件

filtered:是否过滤,比如用用户输入的坐标,包名来替换类中的包名,坐标。

packaged:是否按包输出,比如src/main/java会级联生成三个目录。

文件一般结构为:

 

<?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="hello-api"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <fileSets>
    <fileSet filtered="true" packaged="true" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.*</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" packaged="flase" encoding="UTF-8">
      <directory>src/main/php</directory>
      <includes>
        <include>**/*.*</include>
      </includes>
    </fileSet>
 </fileSets>   
</archetype-descriptor>

 

很容易看明白,但有一种特殊情况是parent工程结构如下:

 

<modules>
		<module dir="api" name="service-api">
			<fileSets>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/test/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/php</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/csharp</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/html</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/test/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
			</fileSets>
		</module>
		<module dir="service" name="service-service">
			<fileSets>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>META-INF/service-conf</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/test/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/test/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
			</fileSets>
		</module>
	</modules>

 

分享到:
评论

相关推荐

    eclipse 创建maven项目 选择 archetypes所用到的jar包

    如果你发现现有的Archetypes不能满足需求,或者想要创建自己的项目模板,可以通过编写Archetype配置文件(archetype-descriptor.xml)和模板代码来实现。自定义的Archetypes可以发布到私有或公共的Maven仓库,供团队...

    archetype-catalog.zip

    使用Maven Archetype时,标签“maven”和“eclipse”表明这个话题与Maven在Eclipse中的集成有关,而“idea”则意味着在IntelliJ IDEA中也有类似的应用。在这些IDE中,正确配置Maven Archetype Catalog可以帮助开发者...

    Eclipse中文教程

    2. 编写代码:在src目录下新建Java类,使用内置的代码编辑器编写程序。 3. 编译与运行:Eclipse会自动编译代码,点击运行按钮或使用快捷键运行程序。 四、调试技巧 1. 设置断点:在代码行号处点击,标记为红色圆点...

    eclipse 下的maven插件

    Eclipse是一款广泛使用的Java集成开发环境(IDE),而Maven是一个强大的项目管理工具,主要用于构建、管理和聚合Java项目。在Eclipse中集成了Maven插件,使得开发者可以在IDE内部方便地利用Maven的功能,无需频繁...

    storage-plugin-archetype-2.2.1.zip

    Tabris是一款开源移动开发框架,允许开发者使用Java或TypeScript编写跨平台的原生移动应用,支持iOS和Android操作系统。 1. **Tabris简介**: Tabris.js是Eclipse基金会的一个开源项目,它允许开发者利用...

    用于Eclipse JavaEE IDE的Richfaces Maven项目

    在Eclipse中,我们可以通过导入Richfaces的Maven Archetype来快速创建一个基础的Richfaces项目。 在实际开发过程中,我们还需要掌握以下几点: 1. **JSF基础知识**:理解JSF的生命周期和渲染机制,以及如何创建...

    maven 插件开发

    开发 Maven 插件通常始于创建一个新的 Maven 项目,使用 Maven Archetype 工具生成基本的插件结构。例如,命令 `mvn archetype:create` 可以用来创建一个新的 Maven 插件项目,指定 `groupId`, `artifactId`, 和 `...

    maven命令

    4. **插件定制**:根据项目需求,可以编写自定义插件或者配置现有插件,执行特定的任务。 5. ** profiles**:Maven 提供 profiles 功能,可以根据环境或条件选择性地启用或禁用某些配置。 **四、总结** Maven 的...

    maven3.0.4学习教程

    在命令行中,可以使用`mvn archetype:generate`命令来创建新项目。在Eclipse中,可以使用内置的Maven插件创建。 2.4. Maven 目录结构说明 Maven 项目遵循标准的目录结构,包括src/main/java(源代码),src/main/...

    Development environment configuration

    4. 创建新的编辑器样式:在文本编辑器设置中,你可以创建自定义的样式,并进行详细定制。 5. 编辑新样式:根据需求调整字体、颜色、间距等样式属性,提升代码的可读性。 6. 修改JSP文件编码:在JSP文件的编辑器设置...

    maven完整教程

    1. **初始化项目**: 使用`mvn archetype:create`命令创建一个新的Maven项目,选择合适的archetype模板。 2. **编辑POM.xml**: 根据项目需求修改POM文件,添加依赖、插件、构建配置等。 3. **构建项目**: 常用的...

    maven2完全使用手册

    - 使用命令`mvn archetype:create`创建项目,指定`groupId`和`artifactId`,例如: ``` mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app ``` **构建流程**: - `mvn compile`:编译源...

    AXIS2 WebService

    - **Axis2 Plugin for Eclipse**:Eclipse的插件,提供了集成的AXIS2开发环境,包括代码生成、部署等功能。 - **Axis2 Archetype**:Maven的archetype插件,帮助快速创建AXIS2 Web服务项目结构。 5. **Test_ws子...

    Netty+maven的入门程序

    6. **调试和测试**: 为了确保代码的正确性,你可以编写单元测试或集成测试,使用 JUnit 或其他测试框架。测试应覆盖服务器和客户端的各个方面,包括连接、数据传输和断开连接等场景。 7. **文档和注释**: 为了帮助...

    liferay 开发环境 以及教程

    你可以使用Maven的portlet archetype创建一个新的portlet项目,编写Java代码并配置portlet.xml文件。 2. **主题开发**:Liferay支持自定义主题,用于改变门户的外观。可以使用Liferay Theme Maven Archetype创建...

    Maven权威指南 很精典的学习教程,比ANT更好用

    使用Maven Dependency插件进行优化 8.6. 最终的POM 8.7. 小结 II. Maven Reference 9. 项目对象模型 9.1. 简介 9.2. POM 9.2.1. 超级POM 9.2.2. 最简单的POM 9.2.3. 有效POM 9.2.4. 真正的POM 9.3. ...

    maven 项目搭建简单的springmvc登录

    - 使用Spring Security或者自定义逻辑进行用户认证,检查数据库中的用户信息。 5. **创建视图** - 在`src/main/webapp/WEB-INF/views`下创建登录页面(如`login.jsp`),使用JSP语法编写表单。 - 设计登录界面,...

Global site tag (gtag.js) - Google Analytics