Spring MVC 项目,使用maven做一些日常的工作开发的时候,无非是想利用这个工具带来的一些便利。

比如它带来的依赖管理,方便我们打包和部署运行。

这里几个常见的插件就是和这些工程中常用的步骤相关。

以下插件,都在项目跟目录下的 pom.xml 配置文件里进行配置

vim pom.xml

 

maven-compile-plugin

官网: http://maven.apache.org/components/plugins/maven-compiler-plugin/

有时编译的时候是默认用的javac 1.5版本,太老了不支持代码里的某些特性。为了解决这个问题,我们需要设置编译器的版本,直接在后面的插件部分增加如下的插件,比如如下部分,将编译器的版本设定为1.8:

<build>  
  <plugins>  
	<plugin>  
		<groupId>org.apache.maven.plugins</groupId>  
		<artifactId>maven-compiler-plugin</artifactId>  
		<version>2.4.2</version>  
		<configuration>  
			<source>1.8</source>  
			<target>1.8</target>  
			<compilerArgument>-Xlint:all</compilerArgument>
			<showWarnings>true</showWarnings>
			<showDeprecation>true</showDeprecation>
			<encoding>utf8</encoding>
		</configuration>  
	</plugin>  
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-war-plugin</artifactId>
		<version>2.1.1</version>
	</plugin>
  </plugins>  
</build>

编译生成war包:

1) 清空target目录命令: mvn clean

2) 编译生成war包命令: mvn install

java-maven-chang-yong-cha-jian-01

 

官网给出的示例:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

 

exec-maven-plugin

我们写一些java console相关的程序时,比较头疼的一点就是真正要通过命令行将打包后的程序执行起来还是比较麻烦的。我们需要在命令行里敲如下的命令:java -cp ***.jar:**.jar:/**/ 。因为要将classpath目录以及引用的类库都加入进来,并指定运行的入口,这样子每次用手工的方式来处理实在是太繁琐也比较容易出错。所以一种办法就是利用这个插件,通过一些基本的配置,我们可以执行起代码来的时候很方便。

一个典型的配置如下:

<plugin>  
	<groupId>org.codehaus.mojo</groupId>  
	<artifactId>exec-maven-plugin</artifactId>  
	<version>1.2.1</version>  
	<executions>  
	<execution>  
	  <goals>  
		<goal>java</goal>  
	  </goals>  
	</execution>  
	</executions>  
	<configuration>  
	   <mainClass>com.mimvp.App</mainClass>  
	</configuration>  
</plugin>  

如果我们运行的时候需要提供一些输入的参数,也可以通过configuration的元素里添加。这样后续要执行这个程序时,我们只需要在命令行执行如下命令:mvn exec:java ,然后程序就可以运行起来了。

 

maven-dependency-plugin

还有一个比较常用的插件就是这个。

我们在IDE的环境里编译和执行代码的时候,那是直接引用一些类库。但是在我们实际部署的环境里,那边很可能就一个java执行环境,不可能有源代码和IDE。这个时候,我们需要将源代码编译打包。这个时候的一个问题就是如果我们引用的库很多的话,我们希望能够把他们统一打包到一个目录下,比如lib文件夹。这样部署执行的时候只需要将编译生成的程序jar包和依赖包文件夹拷到特定目录去执行。要实现这个效果也比较容易:

<plugin>   
    <artifactId>maven-dependency-plugin</artifactId>   
        <executions>   
        <execution>   
            <phase>install</phase>   
            <goals>   
                <goal>copy-dependencies</goal>   
            </goals>   
            <configuration>   
                <outputDirectory>${project.build.directory}/lib</outputDirectory>   
            </configuration>   
        </execution>   
    </executions>   
</plugin>  

从前面的配置里我们可以看到,插件的执行被配置到install这个阶段。

这样当我们执行命令:mvn clean install 的时候,会发现对应的target目录里生成了对应的jar包和依赖包。

 

很多时候,大家都喜欢在eclipse中直接生成webapp的maven项目,但是这样子会产生很多问题,特别是使用的jdk不是maven默认支持的jdk的时候。

一般情况下,我是先建立一个最基本的maven项目,类型如下

<packaging>jar</packaging>

然后设置好jdk版本,再改为

<packaging>war</packaging>

再用eclipse update一下maven项目,eclipse的maven插件自会帮我们建立好此webapp在当前jdk下支持的各种默认参数,然后再优调一下就可以使用了,会省去很多麻烦事。

 

 

参考推荐

maven 常用命令

Linux 搭建 maven

Maven pom.xml 配置详解