`
yyjlinux
  • 浏览: 370092 次
  • 来自: ...
社区版块
存档分类
最新评论

Maven工程配置

 
阅读更多

================ 基本配置 ================

1. 设置构建出的程序包名称

Maven构建出的程序包,无论是jar, war, 或是ear也好,名称默认都是由${artifactId}-${version}组成的,如:seurat-web-1.0.0-SNAPSHOT.war

如果希望设置生成的程序包名称,如seurat-web.war,可以在<build>下的<finalName>中指定:

<build>
	<finalName>seurat-web</finalName>
</build>

 

================ Maven构建插件 ================

1. 代码编译

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>

编译插件用于编译工程中的Java源码,默认编译器使用JDK javac,并默认允许的Java源码和输出的编译版本都是1.5。

 

如果编写的源码是基于jdk1.6的,则需要明确配置插件的source和target属性,如下:

 

<plugin>
	<artifactId>maven-compiler-plugin</artifactId>
	<configuration>
		<source>1.6</source>
		<target>1.6</target>
	</configuration>
</plugin>

Note:

 

  • 在pom中,Apache的Maven插件可以不用显示指定<groupId>
  • 在导入Maven项目时,Eclipse会根据compiler插件上source属性指定的JDK版本,准备相应的JDK构建环境。

 

更多参数配置见:Maven Compiler Plugin

http://maven.apache.org/plugins/maven-compiler-plugin/

 

上述插件的source和target属性,直接对应jdk javac的两个命令行选项,具体含义如下:

-source release

Specifies the version of source code accepted. The following values for release are allowed:

1.3  The compiler does not support assertions, generics, or other language features introduced after JDK 1.3.

   1.4  The compiler accepts code containing assertions, which were introduced in JDK 1.4.

   1.5  The compiler accepts code containing generics and other language features introduced in JDK 5.

   5     Synonym for 1.5.

   1.6  This is the default value. No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors, instead of warnings, as previously.

   6     Synonym for 1.6.

 

-target version

Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are 1.1 1.2 1.3 1.4 1.5 (also 5) and 1.6 (also 6).

 

The default for -target depends on the value of -source:

If -source is not specified, the value of -target is 1.6

If -source is 1.2, the value of -target is 1.4

If -source is 1.3, the value of -target is 1.4

For all other values of -source, the value of -target is the value of -source.

更详细信息可参考JDK javac: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

 

何时利用source和target?

利用source和target选项,允许由低版本的java源代编译出高版本的class文件,反之不行。

如用JDK javac 1.6,可以将JDK 1.4标准编写的源码编译为符合JDK 1.6规范的class文件,但用1.6写的代码,由于引入了更多的语言特性,无法编译出1.4规范的class文件。

 

如何查看.class文件的JDK编译版本?

编译后的class类文件版本,可以通过文件头来识别。用二进制编辑器打开.class文件,第一行内容如:

CA FE BA BE 00 00 00 32 01 E7 09 00 04 01 15 0A

前四个字节为固定的 CA FE BA BE ,接下来的四个字节为次版本号(0000)和主版本号(0032),其中主版本号的位置代表了JDK编译版本:
32:JDK1.6 
31:JDK1.5 
30:JDK1.4 
2F:JDK1.3 

 

2. 拷贝资源文件(并过滤资源实现变量替换)

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>

 

该插件主要用于将工程下的资源文件拷贝到编译代码的输出目录下,并可以设置激活资源过滤实现变量替换。

Note:

默认情况下,对资源过滤及替换变量的功能是关闭的,需要时必须激活才能生效。

 

如何激活资源过滤功能,进行变量替换?

在<build>的资源目录配置中,增加资源过滤<filter>属性并设置为true,具体如下:

<build>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<filtering>true</filtering>
		</resource>
	</resources>
	<testResources>
		<testResource>
			<directory>src/test/resources</directory>
			<filtering>true</filtering>
		</testResource>
	</testResources>
</build>
  • 不设<filter>值则默认为false,Resource插件只进行资源文件拷贝,而不做资源过滤,也不进行资源文件中的变量替换工作。
  • <directory>用于设置资源文件的根目录。

关于编码集

对资源进行过滤时,插件默认会按project.build.sourceEncoding变量设置编码集读入资源文件,进行变量替换,最后按该编码集写入到输出目录,所以资源文件的编码集要和这个变量指定的编码集兼容。

如果没有指定project.build.sourceEncoding变量的编码集,那么操作系统级的编码集将作为该变量值,这样可能会导致资源文件过滤后乱码的问题。如资源文件编码用的是UTF-8, project.build.sourceEncoding变量是GBK,则插件将会用GBK解析资源文件,导致输出目录下的资源文件乱码。

因此,最好显示指定project.build.sourceEncoding的编码集,或利用插件的<encoding>配置指定资源过滤时使用的编码集。

 

3. 可执行jar打包插件

<plugin>

        <artifactId>maven-assembly-plugin</artifactId>

        <version>2.4.1</version>

        <configuration>

          <archive>

            <manifest>

              <mainClass>cn.david.freemaker.jbosseap6.JBossEap6Generator</mainClass>

            </manifest>

          </archive>

          <descriptorRefs>

            <descriptorRef>jar-with-dependencies</descriptorRef>

          </descriptorRefs>

        </configuration>

      </plugin>

 

执行Maven命令:mvn assembly:assembly

 

 

 

 

 

分享到:
评论

相关推荐

    maven工程配置Tomcat热部署

    在用maven项目的时候,很多时候不想去再把项目部署到Tomcat上,然后发布并启动,这个时候我们就可以运用Tomcat热部署来配置,只需要再maven的配置文件加上一小段代码即可,非常方便! 启动的时候直接:右键项目--...

    超详细版图文Maven安装及配置

    #### 五、Maven 工程配置示例 ##### 5.1 pom.xml 文件 - **项目坐标**:在 Maven 项目的核心配置文件 `pom.xml` 中,通过 `&lt;groupId&gt;`, `&lt;artifactId&gt;`, `&lt;version&gt;` 等元素来定义项目的坐标。 - **依赖声明**:...

    Maven下载、安装、配置教程+编程知识+技术开发+Maven工程

    Maven下载、安装、配置教程+编程知识+技术开发+Maven工程; Maven下载、安装、配置教程+编程知识+技术开发+Maven工程; Maven下载、安装、配置教程+编程知识+技术开发+Maven工程; Maven下载、安装、配置教程+编程...

    Maven实战,工程配置

    非常值得一学的Maven工程配置,实现。

    搭建maven工程

    父工程是多模块工程的基础,所有的子模块都将继承父工程的配置。创建父工程需要选择 Maven Project,并勾选两个复选框,以便建立一个可被继承的工程。 2. 建立子模块 创建子模块需要在父工程上右键新建一个 Maven ...

    IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    "IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题解决方案" 本文主要介绍了IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题的解决方案。这篇文章详细介绍了 IDEA最新版2020.1的maven工程本地依赖仓库...

    Maven安装及配置详解.pdf

    #### 三、Maven工程配置 ##### 1. 创建Maven工程 - 在IDEA中选择“File”-&gt;“New”-&gt;“Project”,选择Maven并创建新项目。 - 选择项目类型和模板,配置项目的groupId、artifactId和version等基本信息。 ##### 2....

    maven安装配置+myeclipse2017配置+创建maven项目

    1 下载apache-maven-3.3.9并解压 2 配置maven环境变量 (1)在系统变量栏新建变量 (2)编辑系统变量的Path,结尾添加 ;%MAVEN_HOME%\bin(注意分号) ...以上就将maven配置到了myeclipse中,就可以新建maven工程

    maven工程转web工程

    此时,你的Maven工程已经被配置为一个基本的Web工程,具备了Web应用的结构和配置。 五、配置部署装配 为了确保IDE知道如何打包和部署你的Web工程,你需要进一步配置“Deployment Assembly”(部署装配)。再次右键...

    maven工程组织结构

    Maven工程组织结构是Java开发中一个重要的概念,它定义了项目源码、资源、配置以及构建过程的标准布局。这种结构使得项目的管理和维护更加规范,提高了团队间的协作效率。以下将详细解析Maven工程的模块化目录结构...

    第一个maven工程案例

    下面将详细阐述Maven工程的创建、配置以及相关知识点。 1. **Maven工程结构** Maven遵循约定优于配置的原则,一个标准的Maven工程通常包含以下目录结构: - `src/main/java`: 存放源代码 - `src/main/resources`...

    使用ECLIPSE创建MAVEN工程图解

    使用ECLIPSE创建MAVEN工程图解 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE), Maven 是一个基于项目对象模型(POM)的项目管理工具。本文将指导您如何使用Eclipse 创建 Maven 工程,并了解 Maven 的...

    java maven工程 spring boot 学习源码

    通过这个学习源码,你可以学习到如何组织Spring Boot的Maven工程,理解自动配置的工作原理,以及如何编写RESTful API。同时,还可以学习如何使用Maven进行构建、打包和部署应用。对于初学者来说,这是一个很好的实践...

    Maven安装配置教程及仓库、POM坐标系、Maven工程、继承与聚合

    ### Maven安装配置教程及仓库、POM坐标系、Maven工程、继承与聚合 #### Maven安装与配置 在开始之前,我们首先需要了解Maven是什么。Maven是Apache的一个项目,是一个项目管理和综合工具,主要用来帮助Java项目...

    maven多工程搭建过程

    - 如果已经存在多个独立的Maven工程,可以通过Idea的“File -&gt; Open”菜单,一次性导入多个项目到同一个工作空间。 - 确保所有工程都在同一个工作目录下,Idea会自动识别它们为多模块工程。 2. **模块间的跳转** ...

    maven工程

    博文链接提到的是一个在iteye博客上的文章,作者“zhizizhishou0104”分享了关于Maven工程的实践经验和技巧,可能包括设置、配置、解决依赖问题以及如何利用Maven插件等内容。 【标签】:“源码”意味着该博文可能...

    maven聚合工程demo

    ** Maven 聚合工程(Aggregation)与继承(Inheritance)详解 ** 在软件开发中,Maven 是一个强大的项目管理和构建工具,它通过一套规范化的构建过程,帮助开发者管理项目的依赖、构建过程和配置。在 Maven 中,...

    maven第三方仓库配置

    #### 五、创建第一个Maven工程 在IDEA中创建一个新项目,并选择Maven作为构建工具。创建完成后,IDEA会自动生成一个基本的Maven项目结构,包括`pom.xml`文件。 #### 六、POM文件详解 `pom.xml`是Maven的核心配置...

    手动创建maven工程

    本资源提供了一个手动创建的Maven工程示例,有助于初学者理解和掌握如何从零开始构建Maven项目。 首先,我们要理解Maven的核心概念——Project Object Model (POM)。POM是Maven项目的基本配置单元,包含了项目信息...

Global site tag (gtag.js) - Google Analytics