Maven开发规范

大家好,我是瓜哥:

  最近在做微服务项目架构搭建,maven是我们开发当中必不可少的工具,下面对maven的一些规范进行整理。

  • Maven目录结构说明

src/main/java

源代码目录

src/main/resources

所需资源目录

src/main/filters

资源过滤文件目录

src/main/assembly

Assembly descriptors

src/main/config

配置文件根目录

src/main/webapps

各种静态资源或者web相关资源

src/test/java

测试代码目录

src/test/resources

测试所需资源目录

src/test/filters

测试资源过滤文件目录

src/site

与site相关的资源目录

Target/

输出目录根

Target/classes

项目主体输出目录

Test-classes

项目测试输出目录

LICENSE.txt

Project's license

README.txt

Project's readme

  • Maven聚合工程项目结构规范

如下为maven聚合工程的一个项目结构

maven-project(Maven Project)
  |- maven-sub1(Maven Module)
  |- maven-sub2
  |- maven-sub3

|- maven-sub4

maven-project就是个建一个普通的Maven Project,这里省略。唯一注意的一点是,Packaging必须选择pom。

1、要在pom工程中定义公共变量

<!-- 定义公共变量 --> 

<properties> 

       <maven.compiler.source>1.8</maven.compiler.source>

       <maven.compiler.target>1.8</maven.compiler.target>

       <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

       <junit.version>4.12</junit.version>

</properties>   

2pom工程中定义聚合模块

<!-- 待聚合模块 --> 

<modules>

     <module>study-common</module>

     <module>study-pojo</module>

     <module>study-dao</module>

     <module>study-service</module>

     <module>study-elasticsearch</module>

     <module>study-zookeeper</module>

     <module>study-web</module>

</modules>

3pom工程中配置远程部署仓库地址

<!-- 配置部署的远程仓库 --> 

<distributionManagement>

            <repository>

                  <id>spdbccc</id>

                  <name>Nexus deppen</name>

                  <url>http://192.168.17.183:8081/nexus/content/repositories/releases</url>

            </repository>

            <snapshotRepository>

                  <id>snapshot</id>

                  <name>Repository for pamirs</name>

                  <url>http://192.168.17.183:8081/nexus/content/repositories/snapshots</url>

            </snapshotRepository>

</distributionManagement>

 

4<dependencyManagement/>元素中引入所有要进入的jar

a、这里配置了<distributionManagement>,这样子项目就不需要重复配置了  
b、通过<pluginManagement>,对一些插件进行了公共的配置,这里主要是为了消除构建时的告警  

  • pom工程规范举例

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">

           <modelVersion>4.0.0</modelVersion>

           <groupId>com.study</groupId>

           <artifactId>study</artifactId>

           <version>0.0.1-SNAPSHOT</version>

           <packaging>pom</packaging>

 

           <name>study</name>

           <url>http://www.example.com</url>

 

           <properties>

                      <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>

                      <jdk.version>1.8</jdk.version>

                      <maven.compiler.source>1.8</maven.compiler.source>

                      <maven.compiler.target>1.8</maven.compiler.target>

                      <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

                      <junit.version>4.12</junit.version>

                      <servlet.version>3.0.1</servlet.version>

                      <jsp-api.version>2.0</jsp-api.version>

                      <jstl.version>1.2</jstl.version>

                      <log4j2.version>2.8.2</log4j2.version>

                      <spring.version>4.3.8.RELEASE</spring.version>

                      <mybaitsplus.version>2.0.8</mybaitsplus.version>

                      <mysql.version>5.1.40</mysql.version>

                      <druid.version>1.0.29</druid.version>

                      <shiro.version>1.3.2</shiro.version>

                      <ehcache.version>2.6.11</ehcache.version>

                      <jackson.version>2.8.8</jackson.version>

                      <commons-io.version>2.5</commons-io.version>

                      <hibernate-validator.version>5.3.5.Final</hibernate-validator.version>

                      <poi.version>3.16</poi.version>

                      <jetty.version>9.2.17.v20160517</jetty.version>

                      <commons-lang3.version>3.6</commons-lang3.version>

                      <el-api.version>2.2</el-api.version>

                      <el.version>3.0.0</el.version>

                      <hibernate-validator.version>5.1.3.Final</hibernate-validator.version>

           </properties>

           <modules>

                      <module>study-common</module>

                      <module>study-pojo</module>

                      <module>study-dao</module>

                      <module>study-service</module>

                      <module>study-elasticsearch</module>

                      <module>study-zookeeper</module>

                      <module>study-web</module>

           </modules>

           <dependencyManagement>

                      <dependencies>

                                 <!-- test begin -->

                                 <dependency>

                                            <groupId>junit</groupId>

                                            <artifactId>junit</artifactId>

                                            <version>${junit.version}</version>

                                 </dependency>

                                 <!-- web begin -->

                                 <dependency>

                                            <groupId>javax.servlet</groupId>

                                            <artifactId>javax.servlet-api</artifactId>

                                            <version>${servlet.version}</version>

                                            <scope>provided</scope>

                                 </dependency>

                                 <dependency>

                                            <groupId>javax.servlet</groupId>

                                            <artifactId>jsp-api</artifactId>

                                            <version>${jsp-api.version}</version>

                                            <scope>provided</scope>

                                 </dependency>

                                 <dependency>

                                            <groupId>javax.servlet</groupId>

                                            <artifactId>jstl</artifactId>

                                            <version>${jstl.version}</version>

                                 </dependency>

                                 <!-- web end -->

                                 <!-- log4j2 begin -->

                                 <dependency>

                                            <groupId>org.apache.logging.log4j</groupId>

                                            <artifactId>log4j-core</artifactId>

                                            <version>${log4j2.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.apache.logging.log4j</groupId>

                                            <artifactId>log4j-jcl</artifactId>

                                            <version>${log4j2.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.apache.logging.log4j</groupId>

                                            <artifactId>log4j-slf4j-impl</artifactId>

                                            <version>${log4j2.version}</version>

                                 </dependency>

                                 <!-- log4j2 end -->

                                 <!-- Spring begin -->

                                 <dependency>

                                            <groupId>org.springframework</groupId>

                                            <artifactId>spring-test</artifactId>

                                            <version>${spring.version}</version>

                                            <scope>test</scope>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.springframework</groupId>

                                            <artifactId>spring-webmvc</artifactId>

                                            <version>${spring.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.springframework</groupId>

                                            <artifactId>spring-jdbc</artifactId>

                                            <version>${spring.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.springframework</groupId>

                                            <artifactId>spring-aspects</artifactId>

                                            <version>${spring.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.springframework</groupId>

                                            <artifactId>spring-context-support</artifactId>

                                            <version>${spring.version}</version>

                                 </dependency>

                                 <!-- spring end -->

                                 <dependency>

                                            <groupId>commons-io</groupId>

                                            <artifactId>commons-io</artifactId>

                                            <version>${commons-io.version}</version>

                                 </dependency>

 

                                 <!-- jackson begin -->

                                 <dependency>

                                            <groupId>com.fasterxml.jackson.core</groupId>

                                            <artifactId>jackson-databind</artifactId>

                                            <version>${jackson.version}</version>

                                 </dependency>

                                 <!-- jackson end -->

                                 <!-- shiro begin -->

                                 <dependency>

                                            <groupId>org.apache.shiro</groupId>

                                            <artifactId>shiro-spring</artifactId>

                                            <version>${shiro.version}</version>

                                            <exclusions>

                                                       <exclusion>

                                                                  <artifactId>slf4j-api</artifactId>

                                                                 <groupId>org.slf4j</groupId>

                                                       </exclusion>

                                            </exclusions>

                                 </dependency>

                                 <!-- poi provided 不强制依赖 -->

                                 <dependency>

                                            <groupId>org.apache.poi</groupId>

                                            <artifactId>poi-ooxml</artifactId>

                                            <version>${poi.version}</version>

                                            <scope>provided</scope>

                                 </dependency>

                                 <!-- ehcacheredis必选其一,也可同时使用(需要注意) -->

                                 <dependency>

                                            <groupId>net.sf.ehcache</groupId>

                                            <artifactId>ehcache-core</artifactId>

                                            <version>${ehcache.version}</version>

                                 </dependency>

 

                                 <dependency>

                                            <groupId>org.glassfish</groupId>

                                            <artifactId>javax.el</artifactId>

                                            <version>${el.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>javax.el</groupId>

                                            <artifactId>el-api</artifactId>

                                            <version>${el-api.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.apache.commons</groupId>

                                            <artifactId>commons-lang3</artifactId>

                                            <version>${commons-lang3.version}</version>

                                 </dependency>

                                 <!-- Mybatis-Plus -->

                                 <dependency>

                                            <groupId>com.baomidou</groupId>

                                            <artifactId>mybatis-plus</artifactId>

                                            <version>${mybaitsplus.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>mysql</groupId>

                                            <artifactId>mysql-connector-java</artifactId>

                                            <version>${mysql.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>com.alibaba</groupId>

                                            <artifactId>druid</artifactId>

                                            <version>${druid.version}</version>

                                 </dependency>

                                 <dependency>

                                            <groupId>org.hibernate</groupId>

                                            <artifactId>hibernate-validator</artifactId>

                                            <version>${hibernate-validator.version}</version>

                                            <!-- <classifier>testing</classifier> -->

                                 </dependency>

                      </dependencies>

           </dependencyManagement>

           <!-- 使用aliyun镜像 -->

           <repositories>

                      <repository>

                                 <id>aliyun</id>

                                 <name>aliyun</name>

                                 <url>http://maven.aliyun.com/nexus/content/groups/public</url>

                      </repository>

           </repositories>

</project>

 

  • Maven常用插件总结

<build>

            <finalName>study-common</finalName>

            <plugins>

                  <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-compiler-plugin</artifactId>

                       <version>2.3.2</version>

                       <configuration>

                             <source>${jdk.version}</source>

                             <target>${jdk.version}</target>

                             <encoding>${project.build.sourceEncoding}</encoding>

                       </configuration>

                  </plugin>

                  <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-surefire-plugin</artifactId>

                       <version>2.12.4</version>

                       <configuration>

                             <excludes>

                                   <exclude>**/*Test.java</exclude>

                             </excludes>

                       </configuration>

                  </plugin>

                  <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-jar-plugin</artifactId>

                       <version>3.0.2</version>

                  </plugin>

<!-- 自动在运行的时候进行打成war包 -->

                  <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-war-plugin</artifactId>

                       <version>2.1.1</version>

                       <configuration>

                             <!-- 重点是这个配置 -->

                             <warName>cubc</warName>

                             <warSourceDirectory>${project.basedir}/${pro.outerDirectory}</warSourceDirectory>

                             <packagingExcludes>WEB-INF/web.xml</packagingExcludes>

                             <failOnMissingWebXml>false</failOnMissingWebXml>

                                                <warSourceExcludes>js/**/*.js,libs/**/*.js,css/**/*.css,libs/**/*.css,WEB-INF/**/*.html</warSourceExcludes>

                       </configuration>

                  </plugin>

            </plugins>

      </build>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT瓜哥-杨得朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值