您的当前位置:首页正文

Maven自定义项目骨架以及自动生成项目结构

2024-12-14 来源:东饰资讯网

通常来说,公司针对某一类型的业务的技术架构是一致的,采用的技术框架和项目目录结构是规范统一的。如果每次新立项一个项目,都手动去创建同样的项目目录结构,这其实会浪费一些不必要的时间,降低开发效率,而且很容易破坏开发规范。我们知道Maven是一个非常易用方便的依赖管理插件,但其实Maven的作用并非只是依赖管理,其实它还有一个非常有用的功能——创建统一的项目结构骨架以及根据某个骨架生成自定义的项目结构。这样子在新开设一个项目的时候,通过统一的骨架来生成对应初始的项目结构,从而实现代码的规范开发和管理。

1. 使用Maven生成项目骨架

我们先来看一下需要生成的项目的整体目录结构,com/testcampus是我们针对目标项目的包名,一般一个独立的项目对应一个独立的包名,所以我们的骨架必须支持包名的自定义,当然包的路径下可能存在一些统一的类,比如说专门做手机端h5的可能在controller下会固定有一个MobileController来专门负责手机端的请求处理,所以我们的骨架也必须支持自定义类。

公司规定的项目目录结构.png
1.1 我们来建一个骨架项目
IDEA-->File-->New-->Project-->Maven-->create from archetype-->maven-archetype-webapp
填写骨架的maven配置.png
1.2 创建需要的目录结构
创建项目结构.png
由于包名使用的是自定义参数__ baseDir __(参数前后都是双下线),所以我们的类所在的包名也必须跟着变量而改变,而目录结构的参数形式是com/demo,但是包名的形式是com.demo,所以我们必须使用另外一个变量来定义包名(这里使用的是basePackage作为参数)

1.3 创建默认的类文件
这里需要用到Spring和Spring MVC我们先添加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         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>com.wind</groupId>
    <artifactId>archetype-demo</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>archetype-demo Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>archetype-demo</finalName>
        <plugins>
            <plugin><!--配置资源打包方式 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4</version>
                <!--最关键的地方 -->
                <configuration>
                    <includeEmptyDirs>true</includeEmptyDirs>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

1.4 开始生成骨架

  • 打开cmd进入骨架所在目录(D:\work\StudyProjects\archetypedemo),执行命令mvn clean archetype:create-from-project
    创建骨架项目初始命令1.png
  • 添加构建骨架配置和参数
  1. 进入项目路径\target\generated-sources\archetype\src\main\resources\META-INF\maven;编辑archetype-metadata.xml文件
<?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="archetype-demo"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
    
    
    <requiredProperties>
        <requiredProperty key="basePackage">
            <defaultValue>com.testcampus</defaultValue>
        </requiredProperty>
               
        <requiredProperty key="baseDir">
        <defaultValue>test/testcampus</defaultValue>
        </requiredProperty>
    </requiredProperties>
              
  <fileSets>
    <fileSet filtered="true" packaged="false" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.java</include>
      </includes>
    </fileSet>
    
    <fileSet filtered="true" packaged="false" encoding="UTF-8">
      <directory>src/main/java/__baseDir__/controller</directory>
    </fileSet>
    
    <fileSet filtered="true" packaged="false" encoding="UTF-8">
      <directory>src/main/java/__baseDir__/service</directory>
    </fileSet>
    
    <fileSet filtered="true" encoding="UTF-8">
      <directory>src/main/webapp</directory>
      <includes>
        <include>**/*.jsp</include>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.idea</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.idea/artifacts</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.idea/libraries</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
    <fileSet encoding="UTF-8">
      <directory></directory>
      <includes>
        <include>archetypedemo.iml</include>
      </includes>
    </fileSet>
  </fileSets>
</archetype-descriptor>
  1. 进入项目路径\target\generated-sources\archetype\src\test\resources\projects\basic;编辑archetype.properties文件
#Mon Mar 26 18:53:52 CST 2018
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
#配置自定义参数
baseDir=com/googletool
basePackage=com.googletool
  1. 项目路径\src下的所有文件复制到项目路径\target\generated-sources\archetype\src\main\resources\archetype-resources\src
  2. 删除项目路径\target\generated-sources\archetype下的target目录,然后复制当前目录下的到项目路径下(注意先把项目路径下的所有东西删掉)
  3. 进入项目目录,执行命令:mvn clean install,执行结果看到success表示执行成功
    执行结果部分截图.png
  4. 去本地Maven仓库查看,确实存在我们刚刚生成的骨架


    本地Maven仓库.png
  5. 测试使用刚生成的骨架来创建项目目录结构
    我在骨架项目的同等路径下创建一个test文件夹,我们把生成的项目放到test目录下;cmd进入test目录(D:\work\StudyProjects\test),执行命令:
mvn archetype:generate -B -DarchetypeGroupId=com.wind -DarchetypeArtifactId=archetype-demo-archetype 
-DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.testcampus -DartifactId=test-campus-archetype 
-Dversion=1.0-SNAPSHOT -DbaseDir=com/testcampus -DbasePackage=com.testcampus -DarchetypeCatalog=local 

然后进入test目录下就可以看到生成的项目结构了

显示全文