`

maven的使用

阅读更多
附件中是《maven实战》前三章的电子版
  maven用于项目管理,项目jar包的依赖,有三个坐标groupId,artifactId,version(版本号)。
  主要常用的命令有
mvn clean,清除生成的类文件,即target文件夹下的classes文件
                    mvn compile,编译
                    mvn package,将项目打包为jar文件或其他压缩文件,具体由pom文件指定
mvn install,将jar包安装到本地库中,(默认在C盘的C:\Documents and Settings\用户名  下)
mvn eclipse:eclipse生成eclipse项目

mvn clean install -DskipTests -Denv=dev 编译打包并跳过测试

mvn play2:run -Dplay2.httpPort=9001 -Dplay2.serverJvmArgs="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=9991,suspend=n" maven启动play项目
9991是远程调试接口

如果想看依赖的第三方jar包的源码:
eclipse的设置:勾选windows-Preferences-Maven-Download Artifact Sources 这个选项

使用maven命令行下载依赖包的源代码:
mvn dependency:sources
mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true
-DdownloadSources=true 下载源代码Jar  -DdownloadJavadocs=true 下载javadoc包

如果执行后还是没有下载到,可以到仓库上搜一下,然后放到指定的目录下即可,就可以在项目里看到源码了

pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<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.juvenxu.mvnbook</groupId>
	<artifactId>helloworld</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>Maven Hello World Project</name>
	<dependencies>  //依赖于junit-4.8.2.jar包
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.2</version>
			<scope>test</scope> //如果在src文件夹下的java文件中import junit的类会出错,但如果在test文件夹下就不会出错。默认为compile范围,
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin> //用于执行,指定要执行的主类
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>1.2.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer
									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

									<mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

	</build>

</project>


这样再执行mvn clean install,就会在target文件夹下生成两个jar文件,其中一个以original开头的,是没有指定MainClass的,另外一个是在meta-info文件夹下的MANIFEST.MF文件中指定了Main class。

再用java -jar命令就可以执行这个可执行的jar文件了


需要在maven的pom文件中添加如下的插件,才能保证在eclipse中可以正确的运行maven的命令:

<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
      <version>2.4.1</version>
      <configuration>
        <failOnError>false</failOnError>
      </configuration>

</plugin></plugins>
</build>

解决maven项目中源文件的编码问题,在pom文件中的properties添加如下元素:
<project.build.sourceEncoding>GBK</project.build.sourceEncoding>
     <project.reporting.outputEncoding>GBK</project.reporting.outputEncoding>

另外:
Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。

用户可以通过两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只是输入生命周期阶段而已,例如Maven默认将maven-compiler-plugin的compile目标与 compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。第二种方式是直接在命令行指定要执行的插件目标,例如mvn archetype:generate 就表示调用maven-archetype-plugin的generate目标,这种带冒号的调用方式与生命周期无关。

认识上述Maven插件的基本概念能帮助你理解Maven的工作机制,不过要想更高效率地使用Maven,了解一些常用的插件还是很有必要的,这可 以帮助你避免一不小心重新发明轮子。多年来Maven社区积累了大量的经验,并随之形成了一个成熟的插件生态圈。Maven官方有两个插件列表,第一个列 表的GroupId为org.apache.maven.plugins,这里的插件最为成熟,具体地址为:http://maven.apache.org/plugins/index.html。第二个列表的GroupId为org.codehaus.mojo,这里的插件没有那么核心,但也有不少十分有用,其地址为:http://mojo.codehaus.org/plugins.html。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics