一、简介
Maven自定义原型有助于创建特定类型的项目结构,在任何标准的Maven原型中都是不可用的。在这个maven教程中,我们将学习从eclipse项目创建自定义原型。
它在某些场景中非常有用,特别是当我们需要在生成的maven项目中定制内容时,maven不提供这个选项。
本文将讲解以下内容:
- 为什么需要定制原型?
- 创建自定义原型
- 导入Eclipse项目
- 创建模板文件
- 创建具有自定义原型的新项目
二、为什么需要定制原型?
一般来说,maven和一些第三方提供程序提供一些原型,这些原型在快速启动maven项目时非常有用。但是在我们的日常工作中,我们可能面临一些场景,我们需要为以下原因创建自定义的项目结构:- 需要在组织内引入/实施特定的项目结构(包括包和骨架类)。
- 在建立项目结构的过程中减少了大量的时间,通过快速地开始实际的工作来增加开发人员的生产力。
- 减少代码审查工作,确保项目结构和预期的工件已经就位。
三、创建自定义原型
Maven已经提供了一个创建原型的maven-archetype-archetype去创建新的原型模板
mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype -DgroupId=com.howtodoinjava.archetype -DartifactId=maven-howtodoinjava-archetype -Dversion=1.0-SNAPSHOT
让我来理解上面的命令:
-DarchetypeArtifactId=maven-archetype-archetype
是maven提供的原型来创建新的自定义原型。-DgroupId=com.howtodoinjava.archetype
是我们现在要创建的原型的组id。-DartifactId=maven-howtodoinjava-archetype
是我们现在所创造的原型的名称。-Dversion=1.0-SNAPSHOT
是maven原型的版本。
这里的所有参数都是不言自明的。我们仍然可以在任何时候遵循官方的maven文档了解更多细节。
注意:
我们现在需要从命令提示符运行此命令,然后确保设置maven类路径。
因此,当您从命令提示符运行这个命令时,您将在启动mvn命令的同一目录中生成一个maven项目。
四、将项目导入eclipse中
接下来的工作是在eclipse中导入这个项目,以进一步细化以满足我们的需求。在导入后,eclipse项目结构将是这样的。
一旦在eclipse中导入,我们需要执行以下步骤。
- 删除的内容/ src / main /资源/ archetype-resources / src / main / java & / src / main /资源/ archetype-resources / src /测试/ java——主要是App.java和AppTest.java
- 我们需要重新命名文件/ src / main / resources / meta - inf / maven /原型。archetype-metadata xml。xml,稍后我们需要更改这个文件的内容,我们稍后会看到。
五、创建模板文件
现在,我们将为原型应该生成的类和资源创建一些模板文件。- 创建一个模板java文件\src\main\resources\archetype-resources\src\main\java\__project-name__.java和内容:
package ${package};
public class ${project-name} {
public static void ${project-name}SampleMethod() {
System.out.println("Sample method generated by maven Archetype..");
}
}
这个模板文件将根据运行时提供的占位符的值生成java文件。文件名中的位置必须被__NAME__包围,占位符逻辑名分隔符应该是连字符(-)。
- 为属性文件创建一个模板;具有属性键值模板
${project-name}.key=This is ${project-name} test property and the file name will be \src\main\resources\archetype-resources\src\main\resources\__property-file-name__.properties
- 您可以自由地按照您的需求来做模板文件。
- 现在我们需要修改archetype-metadata.xml像下面:
-文件集将声明将要生成的最终项目中的文件。
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="basic">
<requiredProperties>
<requiredProperty key="project-name" />
<requiredProperty key="property-file-name">
<defaultValue>Resource-default</defaultValue>
</requiredProperty>
<!--JUnit version to use in generated project -->
<requiredProperty key="junit-version">
<defaultValue>4.10</defaultValue>
</requiredProperty>
</requiredProperties>
<!--Add new fileset for resources -->
<!--Set filtered="true" to process files in that directory as templates -->
<!--Set packaged="false" to remove package folder structure from resource
directory -->
<fileSets>
<fileSet filtered="true">
<directory>src/main/resources</directory>
<!--Filters example -->
<includes>
<include>*.txt</include>
<include>*.properties</include>
</includes>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</fileSet>
<fileSet filtered="true" packaged="true">
<directory>src/main/java</directory>
</fileSet>
<fileSet filtered="true" packaged="true">
<directory>src/test/java</directory>
</fileSet>
</fileSets>
</archetype-descriptor>
我们还需要更改pom.xml文件archetype-resources文件夹下接受运行时GAV(GroupId:ArtifactId:版本)坐标。我们需要将它更改为占位符,以接受运行时值,因为我们将使用这个原型生成项目。
pom.xml在
archetype-resources下面应该是这样的:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
因此,我们主要完成了与原型更改相关的更改,现在我们应该通过命令mvn clean安装构建原型maven项目。项目应该构建良好,我们已经准备好使用这个原型来创建新的maven项目。
六、创建具有自定义原型的新项目
一旦我们成功地构建了原型项目,并且这个项目成功地安装在本地,我们将运行下面的命令来创建maven项目。
mvn archetype:generate -DarchetypeCatalog=local -DarchetypeArtifactId=maven-howtodoinjava-archetype -DarchetypeGroupId=com.howtodoinjava.archetype -DarchetypeVersion=1.0-SNAPSHOT
Maven将启动交互模式,并询问有关新Maven项目所需的所有属性。跳过默认值的属性,但是如果不确定最后一步中的配置,则可以重写默认值。定制原型输入,例如:
一旦这个步骤完成,我们就应该有一个基于我们开发的模板创建的新项目。
因此,如果您在任何这样的场景中,默认maven原型是不够的,您可以使用maven的隐藏力量创建您自己的自定义原型。
版权申明:本文为博主原创文章,未经博主允许不得转载。
https://www.leftso.com/blog/219.html
时效提示:本文最后更新于【 2017-07-16 11:28:32 】,某些文章具有时效性,若有错误或已失效,请在下方留言。
时效提示:本文最后更新于【 2017-07-16 11:28:32 】,某些文章具有时效性,若有错误或已失效,请在下方留言。
评论区域
评论功能已关闭. 提示:评论功能虽已关闭,关闭之前的评论仍然会展示。