材料准备
- maven3.X 下载 :
http://maven.apache.org/download.cgi - Maven 私服仓库地址:
https://www.sonatype.com/download-oss-sonatype
配置环境变量
如果是linux
vim etc/profile
export M2_HOME=/Users/chenhualong/Documents/dev_tool/apache-maven-3.0.5
export PATH=$PATH:$M2_HOME/bin/
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
source etc/profile
配置path路径
测试
配置公司单独的私服仓库
nexus
*
http://maven.XXXX.com:8081/nexus/content/groups/public/
在另外公司,用的下面这个。
alimaven
aliyun maven
http://repo.XXXXXX.net/repository/maven-public/
central
配置用户组和权限
releases
admin
admin123
snapshots
admin
admin123
maven-central
admin
admin123
maven-3rdParty
admin
admin123
利用命令推送本地Jar包到私服
mvn deploy:deploy-file -DgroupId=tk.mybatis -DartifactId=mapper -Dversion=3.3.9 -Dpackaging=jar -Dfile=C:\Users\lemon\Desktop\tk\mybatis\mapper\3.3.9\mapper-3.3.9.jar -Durl=http://repo.XXXXXX.net/repository/maven-3rdParty/-DrepositoryId=maven-3rdParty
Maven的依赖返回
classpath 分为三种:编译 classpath , 测试 classpath , 运行 classpath
Scope 选项如下:
Compile:编译依赖范围。默认就是 compile。在编译,测试,运行都有效;
Test:测试依赖范围。仅测试有效; 例如 JUnit;
Provided:已提供依赖范围。编译,测试有效,运行时候无效。例如 servlet-api。
System:系统依赖范围。(了解即可)使用 system 范围的依赖必须通过 sytemPath 指定依赖文件的路径。
Import:导入依赖范围。(了解即可)使用 dependencyManagement 时候,可以导入依赖配置
利用idea构建多模块maven项目
* 新建maven,不要勾选任何的archetype.然后填写artifactId和groupId。
* 删除SRC目录,只剩下pom文件即可。
* 新建module,然后通知不勾选任何的archetype,自己构建目录即可。
* 例子中,首先加入moudle,这个顺序需要注意,不然构建会报错。
lemon-maven-module
lemon-maven-dao
lemon-maven-service
lemon-maven-web
org.springframework.boot
spring-boot-starter-parent
1.5.6.RELEASE
其中,dao依赖module,service依赖dao,web依赖service. 在web层,我们新建run启动方法,然后配置文件之类的写在web层。
在启动的时候,最好web,把所有的module都依赖上,这样就完全没有问题。
多模块项目打包
先配置web层的pom文件
org.springframework.boot
spring-boot-maven-plugin
repackage
,就可以打出可执行的包了。注意打包顺序,被依赖的先打。
[INFO] Reactor Summary:
[INFO]
[INFO] lemon-maven-parent ................................. SUCCESS [ 0.876 s]
[INFO] lemon-maven-module ................................. SUCCESS [ 0.755 s]
[INFO] lemon-maven-dao .................................... SUCCESS [ 0.087 s]
[INFO] lemon-maven-service ................................ SUCCESS [ 0.043 s]
[INFO] lemon-maven-web .................................... SUCCESS [ 0.444 s]
搭建maven私服
* 解压私服程序 tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz
* 启动私服程序 ./nexus start
* 访问私服 : http://host:8081/nexus
* 登陆: admin/admin123
* 点击Repositories,选择public reposotories,下方选择configuration,选择需要留下的组移动过去
* remote storage location 里面填写; http://repo1.maven.org/maven2/
常用的maven插件
maven-jetty-plugin
输入:mvn jetty:run。这将在端口为8080的Jetty服务器上启动你的项目。Jetty将持续运行,直到插件是明确停止。例如,按下,或使用mvn jetty:stop命令
rop-sample
org.mortbay.jetty
maven-jetty-plugin
6.1.5
src/main/webapp
3
/
8088
maven-compiler-plugin 需要在编译和生成的时候使用不同的jdk版本
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.7
maven-war-plugin
打包war项目的时候排除某些web资源文件,这时就应该配置maven-war-plugin如下
org.apache.maven.plugins
maven-war-plugin
2.1.1
src/main/webapp
**/*.jpg
maven-source-plugin 生成源码包
org.apache.maven.plugins
maven-source-plugin
2.1.2
attach-sources
verify
jar-no-fork
maven-javadoc-plugin 生成javadoc包
org.apache.maven.plugins
maven-javadoc-plugin
2.7
attach-javadocs
jar
maven-assembly-plugin
它支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等,通过一个打包描述文件(该例中是src/main/assembly.xml),它能够帮助用户选择具体打包哪些文件集合、依赖、模块、和甚至本地仓库文件,每个项的具体打包路径用户也能自由控制。如下就是对应上述需求的打包描述文件src/main/assembly.xml
bin
zip
true
lib
/
README.txt
src/main/scripts
/bin
run.sh
run.bat
org.apache.maven.plugins
maven-assembly-plugin
2.2.1
src/main/assembly/assembly.xml
make-assembly
package
single
maven-surefire-plugin 打包时跳过单元测试
org.apache.maven.plugins
maven-surefire-plugin
2.16
once
-Dfile.encoding=UTF-8