Apache-Maven进阶一

一、什么是Maven

Maven本质上是一个工程管理和理解工具。

提供了一种方式,帮助管理:

Builds

Documentation

Reporting

Dependencies

SCMs

Releases

Distribution

二、Maven对我们的开发进度有什么益处?

采用标准的规定和惯例加速开发周期

同时达到更高的成功率

三、如何设置Maven

Maven默认设置可以满足大多数情况,如果你想改变,cache位置、Http代理,需要改变配置。

Maven的配置三个级别:

1Project:大多数静态设置在pom.xml文件中。

2Installation:在安装时,加入的配置。

3User:对特殊用户的配置。

很显示,Project定义的信息,不管谁建造他,都将被应用到工程。别的两项定义针对当前环境。

注:InstallationUser定义的信息,通常不能加入共享工程信息。例如,<organization><distributionManagement>

对于上面注中提到的情况,需要写一个父pom.xml用于让其它工程继承。

1.配置本地资源库

可以修改${user.home}\..m2\settings.xml。该文件不是必需,如没有,系统将使用默认文件(${M2_HOME}\conf\settings.xml)

打开settings.xml,找到localRepository,默认值为${user.home}\.m2\repository。将默认值改为本地路径。如,d:\repository

注:该路径必须是本地路径。

2.配置代理

代理也可以在配置文件中指定。

代理作用:供访问Maven 2.0Http请求使用。

代理设置如果需要验证,需要提供用户名和密码。

setting.xml配置文件:

<proxies>

<proxy>

<id>optional</id>

<active>true</active>

<protocol>http</protocol>

<host>proxy.somewhere.com</host>

<port>8080</port>

<username>liuyf</username>

<password>123456</password>

<noProxyHosts>www.google.com|*.somewhere.com</noProxyHosts>

</proxy>

</proxies>

注:noProxyHosts支持通配符。不代理的主机列表。

3.配置并行工程

Maven 2.1.0默认一次下载5个工程(不同组)。

启动Maven时,可以通过-Dmaven.artifact.threads来设定。

mvn –Dmaven.artifact.threads=1 clean install

如果设定固定值,可以通过设置MAVEN_OPTS环境变量,来指定。例如,Unix下,根据需要改为Windows

export Maven_OPTS=-Dmaven.artifact.threads=10

4.安全和发布设置

发布工程到指定的资源库,是在工程的pom.xml文件中通过<distributionManagement>来设定的。但是你不可以将用户名,密码,和一些安全设置放到这个配置文件中。因此,你应该加入一个server定义,工程通过id来配置对应的server

<servers>

<server>

<id>lyf</id>

<username>liuyf8688</username>

<password>123456</password>

<privateKey>默认值~/.ssh/id_dsa</privateKey>

<passPhrase>my_key_phrase</passPhrase>

</server>

</servers>

5.使用资源库镜像

资源库可以被声明在一个工程中,那意味着如果你拥有本地的资源库,共享的工程非常容易从资源库外面得到适当的设置。

使用镜像的原因:

1)在internet网上同步镜像,地理位置近,访问速度快。

2)可能想用本地的易控的资源库来替换一个特定的资源库。

3)可能想用maven-proxy提供到镜像的本地缓存,需要替换他的URL

<mirrors>

<mirror>

<id>liuyf8688</id>

<name>liuyf8688</name>

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

<mirrorOf>central</mirrorOf>

</mirror>

</mirros>

6.profiles

资源库配置也可以放到profile。可以拥有多个profile文件,根据环境设置一个生效。

四、如何开始我的第一个Maven工程?

使用Maven的原型(archetype)机制。一个archetype定义了针对某一些任务定义了模板。

执行以下命令,创建工程:

mvn archetype:create –DarchetypeGroupId=org.apache.maven.archetypes

–DgroupId=com.liuyf8688 –DartifactId=liuyf-app

命令成功执行后,将建立liuyf-app工程文件夹。进入文件夹,包括srcpom.xml

1.pom.xml分析

包含工程的工程对象模型。POMMaven的基本工作单元。

pom.xml片断:

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>com.liuyf8688</groupId>

<artifactId>liuyf-app</artifactId>

<packaging>jar</packaging>

<version>1.0-SNAPSHOT</version>

<name>liuyf-app</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>3.8.1</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

</project>

分析:

1projectpom.xml文件的根元素。

2modelVersion:这个文件使用的Object Model的版本。

3groupId:创建这个工程的组和组织的唯一标识。

4artifactId:被这个工程创建的产品的唯一名称。工程的产品典型的是一

jar文件。源文件打包文件也用这个名称作为他的名称的一部分。

5packaging:指示这个产品的使用的打包类型。如,jarwarear

6version:指示这个产品的版本。

7name:工程显示的名称,默认artifactId相同。maven来产生。

8url:指示了工程的站点,默认http://maven.apache.orgmaven来产生。

9description:提供了工程的基本描述。

五、如何编译工程源文件?

进入刚才创建的工程根目录。执行如下命令:

mvn compile

六、如何编译测试程序及运行单元测试程序?

编译并运行测试程序,执行如下命令:

mvn test

编译测试程序,执行如下命令:

mvn test-compile

七、如何创建Jar并安装到本地资源库?

先编译程序,再打包程序,执行如下命令:

mvn package

安装程序到本地库,执行如下命令:

mvn install

产生IntelliJ IDEA工程描述,执行如下命令:

mvn idea:idea

产生Eclipse工程描述,执行如下命令:

mvn eclipse:eclipse

打包程序,执行如下命令:

mvn jar:jar,注:如果程序没有编译,打包成的Jar,仅仅包含工程的maven信息。

八、如何使用插件?

Maven 1.0用户注意:加入预执行目标到maven.xml和加入一些实体到project.properties文件中,在这里是有一些不同的。

举例:使用配置JDK编译器,允许JDK 1.5编译源程序。

<build>

<plugins>

<plugin>

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

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

<version>2.0.2</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

</plugins>

</build>

Maven 2.0中的插件,看起来像是一个依赖。

九、如何加入我的资源文件到JAR文件?

main部分,创建标准目录resources/META-INF/资源文件。

十、如何过滤资源文件?

<build>

<resources>

<resource>

<directory>src/main/resources</directory>

<filtering>true</filtering>

</resource>

</resources>

</build>

通过上面指定过滤的资源文件。

1)资源文件引用pom.xml中的内容

资源文件(app.properties)内容如下:

#app.properties

app.name=${pom.name}

app.version=${pom.version}

资源文件中的${pom.name}${pom.version}分别引用了pom.xml文件中内容。执

行如下命令后:

mvn process-resources

资源文件(app.properties)内容变为如下:

#app.properties

app.name=liuyf-app

app.version=1.0-SNAPSHOT

2)资源文件引用外部文件

pom.xml文件添加如下内容到<build>标签。

<filters>

<filter>src/main/filters/filter.properties</filter>

</filters>

资源文件(app.properties)内容如下:

#app.properties

app.name=${pom.name}

app.version=${pom.version}

app.info=${my.filter.value}

外部文件(filter.properties)内容

#filter.properties

my.filter.value=filter content

执行下面命令后:

mvn process-resources

资源文件(app.properties)内容变为如下:

#app.properties

app.name=liuyf-app

app.version=1.0-SNAPSHOT

app.info=filter content

3)引用在pom.xml文件中指定<properties>属性中指定的值。

pom.xml文件加入:

<properties>

<my.filter.value>123456</my.filter.value>

</properties>

4)引用命令行

资源文件内容如下:

#app.properties

app.name=${pom.name}

app.version=${pom.version}

app.info=${command.line.prop}

执行如下命令:

mvn process-resources “-Dcommand.line.prop=789456123”

资源文件内容如下:

#app.properties

app.name=liuyf-app

app.version=1.0-SNAPSHOT

app.info=789456123

十一、如何使用外部依赖?

引用外部依赖需要至少定义四个东西:

groupId

artifactId

version

scope

pom.xml中关于依赖的代码片断:

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

其中scope元素表示工程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值