work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Maven 的使用

Posted on 2016-02-20 12:15  work hard work smart  阅读(385)  评论(0编辑  收藏  举报


1.Maven 下载地址: http://maven.apache.org/docs/3.3.9/release-notes.html

下载解压,路径如:D:\Tools\maven\apache-maven-3.3.9

 

2.设置环境变量

变量名:M2_HOME

变量值:D:\Tools\maven\apache-maven-3.3.9
找到path

在环境变量值尾部加入:;%M2_HOME%\bin;

检查环境:

在命令行输入 mvn -v

 

3.修改仓库位置
新建路径如:E:/maven/repo

\apache-maven-3.3.9\conf\目录下的setting.xml文件,

设置路径

<localRepository>E:/maven/repo</localRepository>

 

4. 创建maven项目 E:/maven下运行如下命令

mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=hello -DpackageName=com.chongshi.test -Dversion=1.0

 

5. 编译项目代码

在命令提示符下进入到我们的创建的项目目录(E:\maven\hello)下,执行:mvn clean compile

 

6. 执行如下命令,才可以导入Eclipse

mvn eclipse:eclipse

 

7.问题补充。

我用的是MyEclipse,我的Maven库不在默认的地方,如何修改这个环境变量?

说明:安装完MyEclipse后,会自动有了M2_REPO环境变量,现在我想修改它,但是显示是"non modifiable","Edit"按钮是灰色的

修改Window->preferences->maven->user settings-> 在这里选择正确 的setting.xml的路径即可,完成后,M2_REPO的路径也会随着修改。

 

 参考

 

8. 创建web项目

命令如下:

mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=mywebapps  -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0 

 只是比普通项目多加一个参数DarchetypeArtifactId

 

定位到创建项目的目录下构建成eclipse项目:

 F:\mywebapp>mvn eclipse:eclipse 

参考

 

9.常见问题

1)编码 GBK 的不可映射字符

编码 GBK 的不可映射字符
用记事本打开java源文件。
然后另存为,选择ANSI
覆盖即可

 

10、使用Maven打包

D:\workspace\monitor_tuning>mvn clean package -Dmaven.test.skip

错误1:Fatal errorcompiling 无效的标记

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<!-- compile for Java 1.8 -->
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

  将环境变量设置为Java 8和工程设置的Java8保持一致

 

错误2: 程序包jdk.internal.org.objectweb.asm不存在

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<!-- compile for Java 1.8 -->
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<compilerArgs>
						<!-- 过期的方法的警告-->
						<arg>-Xlint:deprecation</arg>
					</compilerArgs>
					<compilerArguments>
						<!-- 是否输出所有的编译信息(包括类的加载等)-->
						<!--<verbose />-->
						<!-- 解决maven命令编译报错,因为rt.jar 和jce.jar在jre的lib下面,不在jdk的lib下面,
                        导致maven找不到(java7以后会出现这个问题),将这2个jar包拷贝到jdk的lib下面估计也好使-->
						<bootclasspath>${java.home}\lib\rt.jar;${java.home}\lib\jce.jar</bootclasspath>
					</compilerArguments>
				</configuration>
			</plugin>

  最后生成war或者jar文件。

 

11、Scope含义

scope有以下几种

分类 含义
compile 默认compile。参与编译,测试,运行。打包的时候包进去。
test 仅参与测试,包括测试代码编译和执行。如junit
runtime 不参与编译,参与测试和运行
provided 打包的时候可以不包进去。别的设施(web container)会提供
system 和provided相同,不从maven仓库抓,从本机文件拿。一定会配合systemPath使用

 

 

 

 

 

 

 

 

 

12、Maven在Liunx下的安装

下载maven  wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip

解压: unzip apache-maven-3.6.3-bin.zip

 

13、Maven报错:The packaging for this project did not assign a file to the build artifact

https://blog.csdn.net/gao_zhennan/article/details/89713407

 

 14、问题: 无法加载主类 org.apache.maven.wrapper.MavenWrapperMain问题解决

执行mvnw clean package命令,报加载主类 org.apache.maven.wrapper.MavenWrapperMain问题

解决方法:

1)mvn -version

正常打印出版本信息,说明安装正常

 

2)执行如下命令解决

mvn -N io.takari:maven:wrapper