
Maven
Maven
软件求生
这个作者很懒,什么都没留下…
展开
-
Maven install 异常,致命错误: 在类路径或引导类路径中找不到程序包 java.lang。
Maven install 异常,致命错误: 在类路径或引导类路径中找不到程序包 java.lang。原创 2017-12-20 11:13:02 · 3269 阅读 · 2 评论 -
Maven:继承。
面向对象设计中,程序员可以建立一种类的父子结构,然后在父类中声明一些字段和方法供子类继承,这样就可以做到“一处声明,多处使用”。类似的,我们需要创建POM的父子结构,然后在父POM中声明一些配置供子POM继承,以实现“一处声明,多处使用”的目的。我们在模块a下创建一个名为b的子目录,然后在该子目录下建立一个所有除a之外模块的父模块。为此,在该子目录创建一个pom.xml文件,内容如下。&...转载 2018-11-08 14:39:36 · 1296 阅读 · 0 评论 -
Maven:聚合与继承的关系。
多模块Maven项目中的聚合与继承其实是两个概念,其目的完全是不同的。前者主要是为了方便快速构建项目,后者主要是为了消除重复配置。对于聚合模块来说,他知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。对于继承关系的父POM来说,他不知道有哪些子模块继承于他,但那些子模块都必须知道自己的父POM是什么。如果非要说两个特性的共同点,那么可以看到,聚合POM与继承关系中的父...转载 2018-11-08 15:21:26 · 668 阅读 · 0 评论 -
Maven:约定优于配置。
标准的重要性已不用过多强调,想象一下,如果不是所有程序员都基于HTTP协议开发Web应用,互联网会乱成怎样。各个版本的IE、Firefox等浏览器之间的差别已经让很多开发者头痛不已。而Java成功的重要原因之一就是他能屏蔽大部分操作系统的差异,XML流行的原因之一是所有语言都接受它。Maven当然还不能和这些即成功又成熟的技术相比,但Maven的用户都应该清楚,Maven提倡“约定优于配置”,这是...转载 2018-11-08 16:34:58 · 718 阅读 · 0 评论 -
Maven:命令大全。
如果在命令行运行mvn -h 来显示mvn命令帮助,就可以看到如下的信息:usage:mvn [options] [<goal(s)>] [<phase(s)>]Options:...该信息告诉了我们mvn命令的基本用法,options表示可用的选项。除了选项之外,mvn命令后面可以添加一个或者多个goal和phase,他们分别是指插件目标和生命周期阶段。mv...原创 2018-11-15 16:02:26 · 2679 阅读 · 0 评论 -
Maven:包含与排除测试用例。
Maven提倡约定优于配置原则,因此用户应该尽量遵守这一组模式来为测试类命名。即便如此,maven-surefire-plugin还是允许用户通过额外的配置来自定义包含一些其他测试类,或者排除一些符合默认命名模式的测试类。例如,由于历史原因,有些项目所有测试类名称都以Tests结尾,这样的名字不符合默认的3种模式,因此不会被自动运行,用户可以通过如下所示的配置让Maven自动运行这些测试。...转载 2018-11-14 09:44:15 · 1245 阅读 · 0 评论 -
Maven:maven-surefire-plugin简介。
Maven本身并不是一个单元测试框架,Java世界中主流的单元测试框架为JUnit和TestNG。Maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这一插件就是maven-surefire-plugin,可以称之为测试运行器(Test Runner),他能很好的兼容JUnit 3、JUnit 4以及TestNG。我们知道,生命周期阶段需...转载 2018-11-14 15:14:42 · 40331 阅读 · 1 评论 -
Maven:自动化版本发布。
当熟悉了版本发布流程之后,就会希望借助工具将这一流程自动化。Maven Release Plugin就提供了这样的功能,只要提供一些必要的信息,他就能帮我们完成上述所有版本发布所涉及的操作。下面介绍如何使用Maven Release Plugin发布项目版本。Maven Release Plugin主要有三个目标,他们分别为:release:prepare 准备版本发布,依次...转载 2018-11-16 11:54:41 · 2161 阅读 · 0 评论 -
Maven:自动化创建分支。
在正式发布版本1.1.0的同时,还可以创建一个分支用来修复将来这个版本可能遇到的重大Bug。这个过程可以手工完成,例如使用svn copy操作将主干代码复制到一个名为1.1.新的分支中,然后修改分支中的POM文件,升级其版本为1.1.1-SNAPSHOT,这会涉及很多Subversion操作。使用Maven Release Plugin的branch目标,他能够帮我们自动化这些操作:检查本...转载 2018-11-16 13:47:39 · 1003 阅读 · 0 评论 -
Maven:Maven GPG Plugin。
在使用Maven GPG Plugin之前,首先需要确认命令行下的gpg是可用的,然后如下所示配置POM。<project>... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins...转载 2018-11-16 15:29:24 · 24393 阅读 · 0 评论 -
Maven属性。
<properties> <springframework.version>2.5.6</springframework.version></properties><dependencies> <dependency> <groupId>org.springframework转载 2018-11-19 10:14:49 · 363 阅读 · 0 评论 -
Maven:Maven Profile。
不同环境的构建很可能是不同的,典型的情况就是数据库的配置。除此之外,有些环境可能需要配置插件使用本地文件,或者使用特殊版本的依赖,或者需要一个特殊的构建名称。要想使得一个构建不做任何修改就能在任何环境下运行,往往是不可能的。为了能让构建在各个环境下方便的移植,Maven引入了profile的概念。profile能够在构建的时候修改POM的一个子集,或者添加额外的配置元素。用户可以使用很多方式激活p...转载 2018-11-19 11:21:30 · 648 阅读 · 0 评论 -
Maven:Web资源过滤。
在Web项目中,资源文件同样位于src/main/resources/目录下,他们经处理后会位于WAR包的WEB-INF/classes目录下,这也是Java代码编译打包后的目录。也就是说,这类资源文件在打包过后位于应用程序的classpath中。Web项目中还有另外一类资源文件,默认他们的源码位于src/main/webapp/目录,经打包后位于WAR包的根目录。例如,一个Web项目的css源码...转载 2018-11-19 13:37:35 · 961 阅读 · 0 评论 -
Maven:在profile中激活集成测试。
很多项目都有大量的单元测试和集成测试,单元测试的粒度较细,运行较快,集成测试粒度较细,运行较快,集成测试粒度较粗,运行比较耗时。在构建项目或者做持续集成的时候,我们都应当尽量运行所有的测试用例,但是当集成测试比较多的时候,高频率的运行他们就会变得不现实。因此有一种更为合理的做法。例如,每次构建时只运行所有的单元测试,因为这不会消耗太多的时间(可能小于5分钟),然后以一个相对低一点的频率执行所有集成...转载 2018-11-19 14:06:36 · 761 阅读 · 0 评论 -
Maven:常用插件参考。
插件名称 用途 来源 maven-clean-plugin maven-compiler-plugin maven-deploy-plugin maven-install-plugin maven-resources-plugin maven-site-plugin maven-surefire-plugin mave...转载 2018-11-08 11:20:23 · 231 阅读 · 0 评论 -
Maven:Settings 元素参考。
元素名称 简介 <settings> <localRepository> <interactiveMode> <offine> <pluginGroups> <pluginGroup> <servers> <server>转载 2018-11-08 10:52:19 · 271 阅读 · 0 评论 -
Maven:POM元素参考。
元素名称 简介 <project> <parent> <modules> <groupId> <artifactId> <version> <packaging> <name> <descri转载 2018-11-08 10:43:49 · 277 阅读 · 0 评论 -
eclipse使用Maven搭建SpringMVC例子。
eclipse使用Maven搭建SpringMVC例子。转载 2018-03-08 15:35:24 · 553 阅读 · 0 评论 -
建议:Maven安装最佳实践。
设置MAVEN_OPTS环境变量在Maven安装目录时,运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行mvn命令时可用。这个时候,MAVEN_OPTS环境变量就能派上用场。我们通常需要设置MAVEN_OPTS的值为:-Xms128m –Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较...转载 2018-10-22 11:44:57 · 193 阅读 · 0 评论 -
建议:Maven依赖常用技巧。
排除依赖传递性依赖会给项目隐式的引入很多依赖,这极大的简化了项目依赖的管理,但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另外一个类库的SNAPSHOT的不稳定性会直接影响到当前的项目。这时就需要排除掉该SNAPSHOT,并且在当前项目中声明该类库的某个正式发布的版本。还有一些情况,你可能也想要替换某个传递性依赖,比如Sun JTA API...转载 2018-10-25 15:19:28 · 288 阅读 · 0 评论 -
Maven从仓库解析并使用依赖构建的机制。
当本地仓库没有依赖构件的时候,Maven会自动从远程仓库下载;当依赖版本为快照版本的时候,Maven会自动找到最新的快照。这背后的依赖解析机制可以概括如下:当依赖的范围是system的时候,Maven直接从本地文件系统解析构件。 根据依赖坐标计算仓库路径后,尝试直接从本地仓库寻找构件,如果发现相应构件,则解析成功。 在本地仓库不存在相应构件的情况下,如果依赖的版本是RELEASE或者LAT...转载 2018-10-29 15:17:06 · 426 阅读 · 0 评论 -
Maven坐标详解。
Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,他们是groupId、artifactId、version、packaging、classifier。先看一组坐标定义,如下:<groupId>org.sonatype.nexus</groupId><artifactId>nexus-in...转载 2018-10-24 17:10:40 · 5757 阅读 · 0 评论 -
Maven:生命周期。
三套生命周期初学者往往会以为Maven的生命周期是一个整体,其实不然,Maven拥有三套相互独立的生命周期,他们分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。每个生命周期包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互...转载 2018-11-06 19:54:18 · 176 阅读 · 0 评论 -
Maven:生命周期和插件。
Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。例如项目编译这一任务,他对应了default生命周期的compile这一阶段,而maven-compiler-plugin这一插件的compile目标能够完成该任务。因此,将他们绑定,就能实现项目编译的目的,如下图所示。内置绑定为了能让用户几乎不用任何配...转载 2018-11-07 11:31:38 · 225 阅读 · 0 评论 -
Maven:插件解析机制。
为了方便用户使用和配置插件,Maven不需要用户提供完整的插件坐标信息,就可以解析得到正确的插件,Maven的这一特性是一把双刃剑,虽然他简化了插件的使用和配置,可一旦插件的行为出现异常,用户就很难快速定位到问题的插件构件。例如mvn help:system这样一条命令,他到底执行了什么插件?该插件的groupId、artifactId和version分别是什么?这个构件是从哪里来的?本文就详细介...转载 2018-11-07 14:26:02 · 867 阅读 · 0 评论 -
Maven:插件配置。
几乎所有Maven插件的目标都有一些可配置的参数,用户可以通过命令行和POM配置等方式来配置这些参数。命令行插件配置在日常的Maven使用中,我们会经常从命令行输入并执行Maven命令。在这种情况下,如果能够方便的更改某些插件的行为,无疑会十分方便。很多插件目标的参数都支持从命令行配置,用户可以在Maven命令中使用-D参数,并伴随一个参数键=参数值的形式,来配置插件目标的参数。例如,...转载 2018-11-13 10:15:25 · 653 阅读 · 0 评论 -
Maven:远程仓库配置。
在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中,如JBoss Maven仓库。这时,可以在POM中配置该仓库,见下面。<project>... <repositories> <repository> <id>jboss</id> ...转载 2018-11-13 11:00:39 · 2105 阅读 · 0 评论 -
Maven:配置Maven从Nexus下载构件(配置私服)。
当需要为项目添加Nexus私服上的public仓库时,可以按下面所示配置。<project>... <repositories> <repository> <id>nexus</id> <name>Nexus</name>转载 2018-11-13 11:33:05 · 921 阅读 · 1 评论 -
Maven:动态指定要运行的测试用例。
反复运行单个测试用例是日常开发中很常见的行为。例如,项目代码中有一个失败的测试用例,开发人员就会想要再次运行这个测试以获得详细的错误报告,在修复该测试的过程中,开发人员也会反复运行他,以确认修复代码是正确的。如果仅仅为了一个失败的测试用例而反复运行所有测试,未免太浪费时间了,当项目中测试的数目比较大的时候,这种浪费尤为明显。maven-surefire-plugin提供了一个test参数让M...转载 2018-11-13 16:59:20 · 2078 阅读 · 0 评论 -
Maven:聚合。
我们会想要一次构建两个项目,而不是到两个模块的目录下分别执行mvn命令。Maven聚合(或者称为多模块)这一特性就是为该需求服务的。为了能够使用一条命令就能构建a和b两个模块,我们需要创建一个额外的名为c的模块,然后通过该模块构建整个项目的所有模块。c本身作为一个Maven项目,他必须要有自己的POM,不过,同时作为一个聚合项目,其POM又有特殊的地方。如下c的pom.xml内容。<...转载 2018-11-08 10:09:50 · 247 阅读 · 0 评论 -
Maven:站点插件。
生成中文站点命令:mvn site在<build>标签下<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <arti...原创 2018-11-19 16:46:04 · 188 阅读 · 0 评论