本系列博文有很长一段时间没有更新了,一切源于这期间由一些其他时请需要处理,同时自己也有点松懈了,接下来需要追赶上来了。
本文将演示使用eclipse中的maven进行简单的项目的依赖管理、打包配置以及进行打包。
0、准备工作
eclipse中创建全空的maven项目(packaging为jar),如果不清楚的,可以参考前面的文章。
刚创建完成之后,文件树是这样的
BlogExample2├── .classpath├── .git│ ├── branches│ ├── config│ ├── FETCH_HEAD│ ├── HEAD│ ├── hooks│ ├── index│ ├── logs│ │ ├── HEAD│ │ └── refs│ │ ├── heads│ │ │ └── master│ │ └── remotes│ │ └── origin│ │ └── master│ ├── objects│ │ ├── 09│ │ │ └── 0de75a2fb3f838ed0e09b06245beac15375223│ │ ├── 36│ │ │ └── c8b0cdf2d254b97d1dbd56873a5e5ff3c89402│ │ ├── aa│ │ │ └── 461803a95b3ebff7356772ea379029694fce09│ │ ├── d6│ │ │ └── 9a0381ef76acc3e0cd248aae28de88b5b00c95│ │ ├── db│ │ │ └── 9ae43e25a6aa124f886fd9dccbff8c4ffdf81f│ │ ├── info│ │ └── pack│ │ ├── pack-b98bb4645cb790f02c640335d24f5a934ea93be8.idx│ │ └── pack-b98bb4645cb790f02c640335d24f5a934ea93be8.pack│ └── refs│ ├── heads│ │ └── master│ ├── remotes│ │ └── origin│ │ └── master│ └── tags├── .gitignore├── LICENSE├── pom.xml├── .project├── README.md├── .settings│ ├── org.eclipse.core.resources.prefs│ ├── org.eclipse.jdt.core.prefs│ └── org.eclipse.m2e.core.prefs└── target ├── classes └── test-classes
1、配置编码
为了避免和解决各种由于编码不一致导致的问题,我们需要对我们的项目配置统一的编码,一般设置为UTF-8编码,需要在pom.xml中配置
UTF-8 UTF-8
2、配置依赖
我们经常需要依赖其他的库来完成代码编写,一般我们可以在相关库的介绍中找到maven依赖配置信息,如果没有,可以通过进行搜索。
对于一个依赖,我们一般需要配置3项:groupId、artifactId、version,对于少数情况,我们还需要配置scope。前三项是唯一确定依赖库的三元素,后面那一项是为了告诉maven这个依赖的使用范围。
假设我们需要依赖mysql的jdbc驱动,我们需要配置:
mysql mysql-connector-java ${version.mysql-jdbc} ${prop.depScope}
这个,我将版本和范围都使用了变量的方式来配置,这两个变量需要在标签<properties>中进行配置,如:
5.1.38 provided
采用这种变量的方式配置,好处在于可以重复使用这个变量,因为有一些依赖库是需要配置几个依赖的,如spring、log4j2,这样就可以做到一改全改,方便维护,请看这个:
4.2.6.RELEASE 2.5 compile org.springframework spring-jdbc ${version.spring} ${prop.depScope} org.springframework spring-webmvc ${version.spring} ${prop.depScope} org.springframework spring-context-support ${version.spring} ${prop.depScope} org.apache.logging.log4j log4j-jcl ${version.log4j} ${prop.depScope} org.apache.logging.log4j log4j-web ${version.log4j} ${prop.depScope}
3、配置打包插件
配置了依赖,就可以愉快的写代码了,然后代码携带一定时候就需要打包、测试了,这个时候就需要配置相应的打包的配置了。maven默认的关于打包的配置已经使得你能够不进行任何配置了,但是对于某些有特别需求的场景还时需要进行配置的。
除了
xxxx
这个配置以外,所有的关于打包的配置都在<build>标签里面,主要是关于源代码文件路径、配置文件路径、输出文件名、输出路径、编译参数、打包包含和排除文件、javadoc生成等等。很多都是以插件的形式提供,也有部分配置是直接标签进行配置,官方插件可以参看进行配置。
1.8 8 3.5.1 2.6 3.0.0 2.7 2.19.1 2.6 3.0.0 2.10.3 1.6 org.apache.maven.plugins maven-compiler-plugin ${version.compiler-plugin} org.apache.maven.plugins maven-jar-plugin ${version.jar-plugin} org.apache.maven.plugins maven-war-plugin ${version.war-plugin} false org.apache.maven.plugins maven-source-plugin ${version.source-plugin} attach-sources jar-no-fork true org.apache.maven.plugins maven-javadoc-plugin ${version.javadoc-plugin} package jar http://docs.oracle.com/javase/${version.javadoc}/docs/api
在配置插件的时候,对于groupId为org.apache.maven.plugins的插件其实时可以不用配置groupId的,但是配置上看起来更完整一些。
下面来配置一个关于使用第三方插件为javaFX应用打包系统直接可以运行程序的包的配置。
2.6 8.4.0 JavaFXnative com.zenjava javafx-maven-plugin ${version.javafx-maven-plugin} com.zycoo.billing.Main ${project.build.finalName}-${project.version} ${basedir}/src/deploy true true zycoo
插件的github地址和官方文档说明。
4、打包和本地安装
关于打包,很简单,在项目上面右键-run as-maven build/maven install等等,只不过build的时候一般会叫你输入运行的命令,一般情况下都填写“clean package”,这相当于直接在命令行运行“mvn clean package”。
对于上面的javaFX打包,因为本身需要执行“mvn clean jfx:native”所以需要输入“clean jfx:native”.
5、配置父模块
类似于面向对象中的父类,maven支持本pom.xml继承于某一packaging类型为pom的模块,以便于实现配置的集中管理。
各大开源项目都使用了这种方式进行配置。
配置使用标签<parent>配置,下面进行举例:
cn.songxinqiang oss-parent 1.6
6、小结
本文虽然对一般的maven项目的配置的各个方面都涉及说明了,但是对于很多具体的、特殊的需求并没有很深入的讲解,毕竟本文只是一篇入门的文章,很多“高级”的用法都还需要慢慢在实际使用中进行摸索。后续会继续推出maven使用的文章,届时会专注于某一个小的方面的问题进行讲述,那就会详细得多。
本文涉及的很多通用的配置,我都作为开源项目托管到git上面了,请参看下面的地址:
同时也发布到了maven中央仓库,你如果想使用的话,直接配置<parent>标签即可:
cn.songxinqiang oss-parent 1.6
cn.songxinqiang ssmv-parent 1.0.1
如有不对的地方,还望指正!!
enjoy!