Maven自定义原型有助于创建特定类型的项目结构,在任何标准的Maven原型中都是不可用的。在这个maven教程中,我们将学习从eclipse项目创建自定义原型。
它在某些场景中非常有用,特别是当我们需要在生成的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原型的版本。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
<?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项目。
mvn archetype:generate -DarchetypeCatalog=local -DarchetypeArtifactId=maven-howtodoinjava-archetype -DarchetypeGroupId=com.howtodoinjava.archetype -DarchetypeVersion=1.0-SNAPSHOT
Maven将启动交互模式,并询问有关新Maven项目所需的所有属性。跳过默认值的属性,但是如果不确定最后一步中的配置,则可以重写默认值。一旦这个步骤完成,我们就应该有一个基于我们开发的模板创建的新项目。
因此,如果您在任何这样的场景中,默认maven原型是不够的,您可以使用maven的隐藏力量创建您自己的自定义原型。
http://blog.xqlee.com/article/219.html