xqlee 1523 0 2017-07-16 11:28:32

文章位置:左搜> 编程技术> 正文

一、简介

    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,稍后我们需要更改这个文件的内容,我们稍后会看到。
在上面的步骤之后,文件夹结构将会是这样,
项目结构2

五、创建模板文件

现在,我们将为原型应该生成的类和资源创建一些模板文件。
  • 创建一个模板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像下面:
    —requiredProperties部分将在生成这个原型的项目时声明所需的所有属性和它们的默认值。
    -文件集将声明将要生成的最终项目中的文件。
    
<?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.xmlarchetype-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的隐藏力量创建您自己的自定义原型。
 

评论区域

暂无评论,快来抢首发吧!!!