`
这些年
  • 浏览: 399870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven 插件

 
阅读更多

1:为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,

                 maven-compiler-plugin用来编译Java代码,

                 maven-resources-plugin则用来处理资源文件。

maven-compiler-plugin(可以指定jdk版本及编译使用的字符集,这里使用的是compiler2.0版本)

<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

 

2:过滤不毕要的资源文件

<build>
 
<filters>
			<filter>D:/WebApp/rmi.test/antx.properties</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**.xml</include>
				</includes>
				<filtering>true</filtering>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<excludes>	
					<exclude>**.xml</exclude>
				</excludes>
			</resource>
		</resources>
</build>

 

可实现将src/main/resources下的所有.xml文件过滤,用D:/WebApp/rmi.test/antx.properties中的配置属性替换.xml${xx.xx.xx}.   

3:

默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin即使用<resources>来实现。如下:

<resource>
				<directory>src/main/webapp</directory>
				<includes>
					<include>WEB-INF/**.xml</include>
				</includes>
				<filtering>true</filtering>
			</resource>

 

编译后,src/main/webapp/WEB-INF及其下的所有.xml文件将同时在target\工程名\WEB-INF\classes路径下 

 

转的

Maven是一个常用的Java build Manager, 使用Maven可以很好的对Java Project的dependency进行管理. 这里我记录几个比较常用的Plugin配置. 

 

  1. 生成JAR打包文件:

    过滤xml不打到jar包中
    配置jar包的入口,即manifest.mf的Main-Class(main方法所在的类)

    配置jar包的lib依赖,即manifest.mf的Class-Path

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<excludes>
						<exclude>conf/*.xml</exclude>
					</excludes>

					<archive>
						<manifest>
							<mainClass>com.chinacache.billing.normandy.deployconfig.main.Main</mainClass>
							<addClasspath>true</addClasspath>        <!--是否配置Class-Path-->
							<classpathPrefix>lib/</classpathPrefix>   <!--依赖路径Class-Path-->
						</manifest>
						<manifestEntries>
							<Class-Path>.</Class-Path>   <!--依赖在jar包的当前目录 Class-Path-->
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>

 

  1. 拷贝XML配置文件:
    [html] view plaincopy
    1. <plugin>  
    2.                 <artifactId>maven-resources-plugin</artifactId>  
    3.                 <executions>  
    4.                     <execution>  
    5.                         <id>copy-resources</id>  
    6.                         <phase>package</phase>  
    7.                         <goals>  
    8.                             <goal>copy-resources</goal>  
    9.                         </goals>  
    10.                         <configuration>  
    11.                             <outputDirectory>target</outputDirectory>  
    12.                             <resources>  
    13.                                 <resource>  
    14.                                     <directory>src/main/resources</directory>  
    15.                                     <filtering>true</filtering>  
    16.                                 </resource>  
    17.                             </resources>  
    18.                         </configuration>  
    19.                     </execution>  
    20.                 </executions>  
    21.             </plugin>  
    这个plugin配置将把在src/main/resources文件夹下的配置文件都拷贝到target文件夹. 这种文件夹配置是IntelliJ下的默认配制.
  2. 拷贝所有的Dependency JARs:
    [html] view plaincopy
    1. <plugin>  
    2.                 <groupId>org.apache.maven.plugins</groupId>  
    3.                 <artifactId>maven-dependency-plugin</artifactId>  
    4.                 <executions>  
    5.                     <execution>  
    6.                         <id>copy-dependencies</id>  
    7.                         <phase>package</phase>  
    8.                         <goals>  
    9.                             <goal>copy-dependencies</goal>  
    10.                         </goals>  
    11.                         <configuration>  
    12.                             <outputDirectory>target/libs</outputDirectory>  
    13.                             <overWriteReleases>false</overWriteReleases>  
    14.                             <overWriteSnapshots>false</overWriteSnapshots>  
    15.                             <overWriteIfNewer>true</overWriteIfNewer>  
    16.                         </configuration>  
    17.                     </execution>  
    18.                 </executions>  
    19.             </plugin>  
    这个plugin将拷贝所有的Dependency JARs到target/libs文件夹下, 这样只要添加这个目录到classpath下, 我们就可以在没有IDE的环境的情况下直接运行我们的程序. 
  3. 生成运行文件:
    [html] view plaincopy
    1. <plugin>  
    2.                 <groupId>org.apache.maven.plugins</groupId>  
    3.                 <artifactId>maven-antrun-plugin</artifactId>  
    4.                 <executions>  
    5.                     <execution>  
    6.                         <id>manifest</id>  
    7.                         <phase>package</phase>  
    8.                         <goals>  
    9.                             <goal>run</goal>  
    10.                         </goals>  
    11.                         <configuration>  
    12.                             <tasks>  
    13.                                 <echo file="target/runjetty.sh">  
    14.                                     java -cp "libs/*:jettysetup-1.0-SNAPSHOT.jar" weblog.examples.jettysetup.JettyLauncher  
    15.                                 </echo>  
    16.                             </tasks>  
    17.                         </configuration>  
    18.                     </execution>  
    19.                 </executions>  
    20.             </plugin>  
    通过这个plugin配置, 我们将在target文件夹下生成一个叫runjetty.sh的文件来设置我们的classpath, 这样我们就可以通过这个脚本直接运行我们的程序了. 上面的这个例子是我在另一篇配置Jetty环境的文章中使用的, 整个的pom.xml配置文件可以在Github上找到.

通过上面的4个简单的配置, 我们可以实现对我们的项目进行打包, 同时拷贝配置文件, 和Dependency JAR文件, 生成执行脚本, 这个打包有几个优势:

 

  1. 打包文件不包含配置文件, 这样我们可以很方便得对配置文件进行修改
  2. 打包文件不包含Dependency JARs, 由于这些JAR并没有打包在我们的project jar文件里, 当我们有多个项目打包文件的时候, 这些JAR将会被共享.
分享到:
评论

相关推荐

    eclipse离线安装maven插件(m2e),maven插件离线安装包

    现在eclipse的社区版都不内置maven插件了,站点在线安装实在是太痛苦了(我装了6个小时),于是急于寻找一种离线安装的办法,可是在网上又找不到对应的m2e包(我用的eclipse4.7),于是我决定将站点下的文件(很多)...

    eclipse安装maven插件需要包

    然而,在某些网络环境不佳的情况下,Eclipse可能无法通过内置的更新机制在线安装Maven插件。本文将详细介绍如何在Eclipse中离线安装Maven插件,以及如何配置Windows环境来确保Maven的正常工作。 首先,我们需要在...

    安装Jenkins的git和maven插件

    本文将详细讲解如何在Jenkins中安装Git和Maven插件,以便实现版本控制与构建管理。 首先,让我们了解Jenkins插件的作用。Jenkins通过插件扩展其功能,提供对各种工具和技术的支持。Git插件允许Jenkins与Git仓库进行...

    eclipse离线安装maven插件详解(内附maven插件包)

    本篇文章将详细解析如何在Eclipse中离线安装Maven插件,同时提供内附的Maven插件包,以解决在线安装过程中的速度问题和可能遇到的错误。 首先,我们需要准备的是Maven的安装。Maven是Apache开源的一个项目管理工具...

    eclipse的maven插件

    Eclipse的Maven插件是开发Java项目时不可或缺的工具,它将强大的Maven构建系统与流行的Eclipse集成开发环境(IDE)相结合,为开发者提供了一站式解决方案。Maven是一个项目管理和综合工具,它通过定义项目的结构和...

    Myeclipse maven插件下载

    MyEclipse集成Maven插件,使得在MyEclipse中使用Maven变得更加便捷。 1. Maven简介: Maven是Apache软件基金会的一个项目,它提供了一个项目管理和综合工具。Maven通过一个项目对象模型(Project Object Model,...

    Myeclipse6.5的Maven插件

    **MyEclipse 6.5 Maven插件详解** 在软件开发过程中,MyEclipse作为一款强大的Java集成开发环境,提供了对多种技术的支持,包括但不限于Java、JSP、Servlet、Struts、Spring等。而在Java企业级开发中,Maven作为...

    eclipse-maven插件

    在Eclipse中集成Maven插件,可以使得开发者在IDE内就能方便地进行Maven相关的操作,如编译、测试、打包等。本篇文章将详细介绍如何在Eclipse中离线安装Maven插件,并配置自定义的本地仓库路径。 首先,我们需要了解...

    eclipse安装的maven插件

    然而,早期版本的Eclipse并未内置Maven支持,因此需要用户自行安装Maven插件来实现对Maven项目的集成管理。本教程将详细介绍如何在低版本的Eclipse中安装和配置Maven插件。 首先,我们需要了解为何要在Eclipse中...

    jenkins 离线安装maven插件集合jenkins-maven.zip

    5. **配置Maven插件**: 在Jenkins中配置Maven插件,你需要提供Maven的安装路径,以便Jenkins在构建过程中调用Maven。这可以在Jenkins全局工具配置中完成,也可以在每个具体的Maven项目配置中设置。 6. **使用Maven...

    自定义maven插件的实现

    然而,有时候Maven的内置插件无法满足特定的需求,这时就需要自定义Maven插件来扩展其功能。本篇文章将深入探讨如何实现自定义的Maven插件。 首先,了解Maven插件的基本结构至关重要。一个Maven插件通常由一组Mojo...

    eclipse安装maven插件,处理无Maven Pom editor打开方式问题

    在Eclipse中安装Maven插件,可以方便开发者在IDE内进行Maven项目的操作,解决无法用Maven Pom editor打开pom.xml文件的问题。以下是对这个主题的详细说明: 1. **Maven Pom Editor**: Maven的pom.xml文件是项目...

    Maven插件源码:根据库表生成实体类&根据实体类生成库表

    在IT行业中,Maven插件是一种非常实用的工具,它扩展了Maven的功能,使得开发者可以自定义构建过程。本文将深入探讨一个特定的Maven插件,该插件能够根据数据库中的库表生成Java实体类,同时也能根据已有的实体类在...

    eclipse安装maven插件

    Eclipse作为流行的Java集成开发环境(IDE),通过安装Maven插件,可以让开发者在Eclipse内部方便地进行Maven项目的开发和管理。下面我们将详细介绍如何在Eclipse中安装Maven插件。 首先,我们需要知道为什么要在...

    Myeclipse10安装maven插件

    ### MyEclipse10安装与配置Maven插件详尽指南 #### 一、Maven简介及重要性 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者可以方便地管理项目的依赖关系、...

    eclipse-maven3-plugin Maven插件离线安装包

    打开并输入:path= D:/Development/eclipse-JavaEE/eclipse/plugins/maven(请参照上面对应你的 maven 插件) 4. 重启 eclipse,OK,完成了,启动后你打开Window ---&gt; Preferences 会发现一个多了一个选项Maven...

    Maven插件手动下载

    本话题将深入探讨“Maven插件手动下载”的过程及相关知识点。 Maven插件是Maven生态系统中的关键组成部分,它们提供了执行特定构建任务的能力,如编译源代码、打包项目、运行测试等。Maven中央仓库是默认的插件和...

    apache-maven插件

    Maven插件是实现特定构建任务的可插拔组件,如编译代码(maven-compiler-plugin)、打包应用(maven-jar-plugin)或运行单元测试(maven-surefire-plugin)。开发者可以根据需要选择和配置相应的插件,以实现特定的...

Global site tag (gtag.js) - Google Analytics