maven核心配置定义环境属性、插件配置
1、现在已经实现了maven的基本配置,但是这个时候的配置会存在以下的问题。1、当前情况下对于maven项目中使用的jdk都是通过eclipse自身的配置完成的,这样的配置根本就没有任何的实际意义,因为在真正使用maven进行部署的时候,这样的配置是会被maven忽略掉的。2、如果要使用开发框架,例如,现在最为流行的Spring与MyBatis,这个时候往往会需要大量的*.xml文件和*.properties文件,此时这些文件默认情况下肯定都会保存在resouces目录之中,而后会将其进行时保存在classes目录之中;可是项目往往需要划分如下几种情况:1、开发者使用:使用的是开发者自己的本人电脑,那么一些环境配置;2、集中的测试:往往又需要进行一些配置的更新;3、线上的产品环境:需要为其更换为公网的相关配置;
2、java开发领域上所有的开发包的版本是一件非常头疼的事情,那么当一个pom.xml文件非常庞大的时候你改如何进行版本的更换呢?项目开发完成之后往往需要将程序打包*.jar、*.war、源代码文件。
3、所谓的环境属性相当于在pom.xml文件里面定义一些基本的变量信息,例如,可以将项目名称、版本编号、其他的相关的属性都作为变量进行整体的声明,那么这样对于整个的开发程序就可以利用这些变量的引用实现内容的变更。传统的pom.xml文件引入的配置问题:<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>com.gwolf</groupId> <artifactId>crm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>crm Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>crm</finalName> </build></project>
4、那么在这样的情况下就会发现,如果直接将所有的maven依赖的程序库直接复制到pom.xml文件之中,那么就会造成非常麻烦的维护问题。比如说更换版本问题。建议定义全局属性来进行相关的内容控制:<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>com.gwolf</groupId> <artifactId>crm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>crm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>4.12</junit.version> <spring.version>4.3.5.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>crm</finalName> </build></project>
5、如果将一些公共的版本信息或者是一些目录信息都设置为全局环境属性,这样对于日后的项目的维护会非常的方便,在实际的开发之中,建议大家都使用这样的方式来进行基本信息的定义。
6、在之前进行maven问题分析的时候强调过一点:所有在eclipse之中进行的maven的配置都没有实际的意义,只是针对当前的工作区和当前使用的项目有效,那么为了真正的让整个的项目长期可用,在这样的情况下就强烈建议大家需要设置一些相关的插件,例如:可以设置编译插件以配置完所有需要的JDK的版本。修改pom.xml文件进行JDK编译插件配置。<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>com.gwolf</groupId> <artifactId>crm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>crm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>4.12</junit.version> <spring.version>4.3.5.RELEASE</spring.version> <jdk.version>1.8</jdk.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>crm</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encode>${project.build.sourceEncoding}</encode> </configuration> </plugin> </plugins> </build></project>
7、虽然你已经为项目配置好了插件,但是这个时候该插件没有实际的效果。如果要想让配置其作用,那么还需要进行整体的项目更新:alt+f5
8、随后可以直接通过package进行程序的打包处理;
9、很多的时候会发现在一些开源项目发布的时候除了有*.jar文件之外,还会发布源代码,那么如果要想实现源代码的输出配置,那么就可以继续使用一个插件:<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>com.gwolf</groupId> <artifactId>crm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>crm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jdk.version>1.8</jdk.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>crm</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encode>${project.build.sourceEncoding}</encode> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <configuration> <encode>${project.build.sourceEncoding}</encode> </configuration> <executions> <execution> <id>sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>