《Maven实战》

你是否早已厌倦了日复一日的手工构建工作?你是否对各个项目风格迥异的构建系统感到恐惧?Maven——这一Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性。已经有无数的开源项目使用它来构建项目,促进团队交流。每天都由数以万计的开发者在访问中央仓库以获取他们需要的依赖。
由国内的Maven权威亲自执笔,《Maven实战》告诉你Maven的本质是什么,深入阐述Maven的依赖管理、仓库、生命周期、插件等核心概念。你还能看到实际的案例演变,以及诸如多模块组织、建立Nexus私服、使用Hudson进行持续集成等企业开发的最佳实践。
赞誉
“Local-language Maven reference material is always welcome, and Juven, a well-known Maven expert who is very active in the open source community, is well-placed to write a Chinese book on Maven. His new book, ‘Maven in Action’, takes readers from Maven basics right through to more advanced real-world situations including working with web applications, managing releases with Maven, and even writing your own Maven plugins! The book also covers practical details about how to set up Maven in an enterprise, including related tools such as Eclipse integration, the Nexus Repository Manager and Hudson for Continuous Integration. If you are a Chinese developer working with Maven, this book is a must-have!”
John Smart
Wakaleo Consuting首席咨询顾问,《Java Power Tools》(O’Reilly)作者
“终于看到了一本关于Maven的中文图书面世啦,虽然Maven是Java项目构建工具的事实标准,但是相关的资料还是比较少,更别说本土的中文资料。这里非常感谢Juven在业余时间花费大量精力完成了《Maven实战》图书,为Java程序员快速了解和使用Maven提供了参考。虽然很多Java项目都在使用Maven进行管理,但是仍然有不少开发人员还在使用传统的方法管理项目,希望《Maven实战》会给你带来不一样的项目构建和管理体验。Juven同时还是Maven社区的主力推动者,翻译了《Maven权威指南》、撰写了Maven相关的大量文章、制作了各种Maven培训资料,Maven User Group维护等等。“
雷卷
淘宝技术专家,mvnsearch.org 作者
目录
- Maven简介 (免费试读)
- Maven安装 (免费试读) (免费迷你版)
- Hello World (免费试读) (免费迷你版)
- 背景案例
- 坐标和依赖 (免费迷你版)
- 仓库
- 生命周期和插件
- 聚合与继承
- 使用 Nexus 创建私服
- 使用 Maven 进行测试
- 使用 Hudson 进行持续集成
- 构建 Web 应用 (免费迷你版)
- 版本管理
- 灵活的构建
- 生成项目站点
- m2eclipse
- 编写 Maven 插件
- Archetype
1.1 何为Maven
1.2 为什么需要Maven
1.3 Maven与极限编程
1.4 被误解的Maven
2.1 在Windows上安装Maven
2.2 在基于Unix的系统上安装Maven
2.3 安装目录分析
2.4 设置HTTP代理
2.5 安装m2eclipse
2.6 安装NetBeans Maven插件
2.7 Maven安装最佳实践
3.1 编写POM
3.2 编写主代码
3.3 编写测试代码
3.4 打包和运行
3.5 使用Archetype生成项目骨架
3.6 m2eclipse简单使用
3.7 NetBeans Maven插件简单使用
4.1 简单的账户注册服务
4.2 需求阐述
4.3 简要设计
5.1 何为Maven坐标
5.2 坐标详解
5.3 account-email
5.4 依赖的配置
5.5 依赖范围
5.6 传递性依赖
5.7 依赖调解
5.8 可选依赖
5.9 最佳实践
6.1 何为Maven仓库
6.2 仓库的布局
6.3 仓库的分类
6.4 远程仓库的配置
6.5 快照版本
6.6 从仓库解析依赖的机制
6.7 镜像
6.8 仓库搜索服务
7.1 何为生命周期
7.2 生命周期详解
7.3 插件目标
7.4 插件绑定
7.5 插件配置
7.6 获取插件信息
7.7 从命令行调用插件
7.8 插件解析机制
8.1 account-persist
8.2 聚合
8.3 继承
8.4 聚合与继承的关系
8.5 约定优于配置
8.6 反应堆
9.1 Nexus简介
9.2 安装Nexus
9.3 Nexus的仓库与仓库组
9.4 Nexus的索引与构件搜索
9.5 配置Maven从Nexus下载构件
9.6 部署构件至Nexus
9.7 Nexus的权限管理
9.8 Nexus的调度任务
9.9 其他私服软件
10.1 account-captcha
10.2 maven-surefire-plugin简介
10.3 跳过测试
10.4 动态指定要运行的测试用例
10.5 包含与排除测试用例
10.6 测试报告
10.7 运行TestNG测试
10.8 重用测试代码
11.1 持续集成的作用、过程和优势
11.2 Hudson简介
11.3 安装Hudson
11.4 准备Subversion仓库
11.5 Hudson的基本系统设置
11.6 创建Hudson任务
11.7 监视Hudson任务状态
11.8 Hudson用户管理
11.9 邮件反馈
11.10 Hudson工作目录
12.1 Web项目的基本结构
12.2 account-service
12.3 account-web
12.4 使用jetty-maven-plugin进行测试
12.5 使用Cargo实现自动化部署
13.1 何为版本管理
13.2 Maven的版本号定义约定
13.3 主干、标签与分支
13.4 自动化版本发布
13.5 自动化创建分支
13.6 GPG签名
14.1 Maven属性
14.2 构建环境的差异
14.3 资源过滤
14.4 Maven Profile
14.5 Web资源过滤
14.6 在Profile中激活集成测试
15.1 最简单的站点
15.2 丰富项目信息
15.3 项目报告插件
15.4 自定义站点外观
15.5 创建自定义页面
15.6 国际化
15.7 部署站点
16.1 m2eclipse简介
16.2 安装m2eclipse
16.3 新建Maven项目
16.4 导入Maven项目
16.5 执行mvn命令
16.6 访问Maven仓库
16.7 管理项目依赖
16.8 其它实用功能
17.1 编写Maven插件的一般步骤
17.2 代码行统计Maven插件
17.3 Mojo标注
17.4 Mojo参数
17.5 错误处理和日志
17.6 测试Maven插件
18.1 Archetype使用再叙
18.2 编写Archetype
18.3 Archetype Catalog
源码下载
随书样例代码 (3708)InfoQ免费迷你版
InfoQ协助为本书创建了一个迷你版本,该版本节选了很多精彩章节,并为提供了免费下载:
http://www.infoq.com/cn/minibooks/maven-in-action
关于本书以及Maven,我还接受了InfoQ的一个采访:
http://www.infoq.com/cn/news/2010/11/maven-in-action
堪误
- 80页,6.3.3中央仓库,第1段,第5行
Maven 3为org/apache/maven/model/pom-4.0.0.xml。Maven 2为org.apache.maven.project/pom-4.0.0.xml - 85页,第2段,第1行
第5.4节 -> 第6.4.1节 - 156页,倒数第2行
Nexus中仓库 -> Nexus中的仓库 - 61页,第1行
应为accountEmailService.sendMail( “test2@juvenxu.com”, subject, htmlText ); - 245页,第3行
引入不容内容的Maven插件 -> 引入不同内容的Maven插件 - 59页,第1段,倒数第2行
account-email.properties -> service.properties - 174页,倒数第5行
没有上传的中央仓库 -> 没有上传到中央仓库

推荐的settings.xml写法参考9.5小节,当前前提是你使用nexus
不推荐手工添加,目前最权威的页面就是中央仓库了 repo1.maven.org
应该只要在account-parent下运行 mvn clean install 就可以
书终于到了。
我想问一下juven一点点题外话,这本书是用什么软件来书写和排版的?是大名鼎鼎的LaTeX,还是写好之后出版社帮排版的呢? 很想知道,呵呵,谢谢!
个人比较喜欢 Docbook 的方式,对LaTex不懂。不过由于国内出版社的现状,本书是直接用Word排版的,我在写作过程中使用了一些出版社指定的格式,最后出版社再重新排版。
签名书已收到。哈哈
呵呵… 第85页第8行: … 配置认证的方式已在第5.4节中详细阐述,… 是不是6.4节呀,貌似小bug!
这本书出版社所采用的纸张是个败笔,另外定价也偏高了
我发现一个错误也可能是我弄错了,在书中第80页,6.3.3中,说的默认maven2.2.1中央仓库的配置好像是在
org\apache\maven\project\pom-4.0.0.xml不是org\apache\maven\model\pom-4.0.0.xml
@jackqin
非常感谢,已添加至堪误
@李
非常感谢,已添加至堪误
许老师,
您好!
我是java初学者,是您新书的读者,读完之后收获很多,非常感谢。有几个小问题如下:
1.我用的版本是3.0.1,好像没有出现P33描述的问题;
2.P65 “最左边一行”,应为最左边一列,小问题;
3.用m2eclipse的时候,新建或导入一个maven工程,结构中即有 src/main/java、src/test/java目录,又有src目录,是不是有点重复,还是因为源码部分操作太频繁了,所以m2eclipse专门提出来两个专门的文件夹,以方便操作?
4.聚合和继承统一到一个pom里的方式我比较喜欢,这种方式是否是推荐方式。
谢谢!
先谢谢作者写了这本书,我想问一下,本书中介绍的CI服务器是Hudson,为什么不用Continuum,它们俩个哪个好一些?本人是初学者,望指教,先谢谢啦!~(*^__^*)
还有个问题想请教,就是我用Nexus管理仓库,我想把Maven Central仓库的插件全下载到我本地(原因是我们公司为了安全,不可以上外网,所以。。。),有没有什么快捷的方法?难道只能一个一个点击“Download”下载?
1. maven3中使用了较新版本的compiler plugin,默认的jdk设置就是1.5
2. 谢谢,会增加堪误
3. src/main/java放主代码,src/test/java放测试代码,一般来说src不会直接对应eclipse中的源码目录
4. 聚合和继承统一使用没什么问题,比较流行的用法吧。
Hudson是最流行的开源CI,用户最多,社区较Continumm更活跃,应该更好些,不过我没仔细深究过Continuum。
central不提供直接的全盘复制,推荐的做法还是给nexus连上网络,否则非常难搞。
作者你好,你的书我拿到几天了,我现在刚要开始看第八章,但是第7章有个问题困惑了我很久。
您在7.2.3 default生命周期中对重要阶段解释中,对process-sources的解释是
“处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出地主classpath目录中。”
而且官网上是这么说的
“process the source code, for example to filter any values.”
这里边有filter any values,应该就是进行变量替换,但是我对process-resources的作用就不太理解了,而且,在7.4.1内置绑定一节,default生命周期中是不包含process-sources的,应该就是说没有插件或者插件的目标跟这个phase默认绑定的意思。我后来明白应该是书中的解释放错地方了,但是我还是不太明白process-sources这个phase的作用,在网上也没查到相关信息。我主要是想请教process-sources的应用和意义,我是新手,希望得到指点。
非常感谢,谢谢您的答复,对我很有帮!(*^__^*)
您好,我想问下,在本书中第8章 146页,使用-rf选项进行裁剪反应堆;
运行 $ mvn clean install -rf account-email后;
得到的反应堆是不是应该是:
[INFO] Scanning for projects…
[INFO] ————————————————————————
[INFO] Reactor Build Order:
[INFO]
[INFO] Account Email
[INFO] Account Persist
[INFO] Account Aggregator
[INFO]
[INFO] ————————————————————————
[INFO] Building Account Email 1.0.0-SNAPSHOT
[INFO] ————————————————————————
而不是:
[INFO] ————————————————————————
[INFO] Reactor Build Order:
[INFO]
[INFO] Account Email
[INFO] Account Persist
[INFO]
[INFO] ————————————————————————
为什么我运行后得到的却是多了一个“[INFO] Account Aggregator”?
请问GWT工程最终如何被编译成javascript?
我对gwt不是非常熟悉,抱歉无法回答你的问题
任何对资源文件的操作都可以称为process-resources,目前常用就是复制和变量替换,当然你想干其他的,也能自己做插件
process-sources可以理解为对java源代码的预处理,内置无绑定,只是提供了空间给你自定义
我目前还没有使用到什么插件用到了这个阶段,但可以想象,你可以在编译源代码之前,做一些预处理,例如优化什么的。
你好,
我在安装nexus服务的时候提示:
wrapper | OpenSCManager failed – 拒绝访问。 (0×5)
请按任意键继续. . .
系统是windows 7旗舰版 32位的
不知道怎么回事。
谢谢
你好,许老师。
我在学习第12章 使用Maven构建WEB应用的时候
输入mvn jetty:run
以后,
出现下面的错误。还请不吝赐教,谢谢!
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Account Web 0.0.1-SNAPSHOT
[INFO] ————————————————————————
[INFO]
[INFO] >>> jetty-maven-plugin:8.0.0.M2:run (default-cli) @ account-web >>>
[WARNING] The POM for com.juwenxu.mvnbook.account:account-service:jar:0.0.1-SNAPSHOT is missing, no dependency information available
[INFO] ————————————————————————
[INFO] BUILD FAILURE
[INFO] ————————————————————————
[INFO] Total time: 0.275s
[INFO] Finished at: Sun Jan 02 13:48:59 CST 2011
[INFO] Final Memory: 2M/15M
[INFO] ————————————————————————
[ERROR] Failed to execute goal on project account-web: Could not resolve dependencies for project com.juwenxu.mvnbook.account:account-web:war:0.0.1-SNAPSHOT: Failure to find com.juwenxu.mvnbook.account:account-service:jar:0.0.1-SNAPSHOT in http://localhost:8080/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
@genezhao
有Maven GWT插件。http://mojo.codehaus.org/gwt-maven-plugin/
我在运行第三章helloworld,使用maven第一次构建时(即使用mvn clean compile),最终是成功,但其中有一段警告
Using platform encoding (GBK actualy) to copy filtered resource, i.e. build is platform dependent!
好像是说构建与平台相关了,我使用windowsXP,这个警告能处理掉吗?
第三章32页中,运行mvn clean test中生成信息中对于clean任务,显示的是D:\git-juven\mvnbook\code\hello-world\target,这个目录也不是代码存放的目录啊,这如何产生的?
我自己执行时显示的是代码存放目录,还请指导一下。
我使用maven3.0.2在使用第三章33页的代码3-5时,执行mvn clean test时会报一些警告,说没有指定maven-compile-plugin的版本号,我把这段代码去掉后就没有这些警告了,我使用jdk1.6.23
一本好书,很少有中文书在这方面写的那么好的,基本上java开发的好实践都涵盖到了,或许可以考虑翻译成英文,应该也有很大市场。
建议人手一本,CM在参加培训深入了解。
恭喜。
BTW: 或许下一版加上sonar
许老师,我买了您的<>,在看到11章的时候,遇到一个问题就是Hudson在任务的构件配置时,我配的是采用Maven,add Build step中填写了4个,Goals填写的分别是,clean,compile,tomcat:run,test。但是clean,compile能构件成功,到tomcat:run的时候,日志打印到马上要启动服务时却卡在哪里了不动了,等了很长时间还是卡在哪里,我试过了好多次结果是一样的。请问许老师,那是怎么回事呢?是我的机子配置太低,还是什么问题的,恳切许老师能百忙之中,帮我一下。谢了许老师。
你在本地跑 mvn tomcat:run,一样会卡在那里,然后你需要ctrl+c来停止,所以先确保本地能够全部执行OK,不需要手工干预,然后再用到CI服务器上。
这里有解释:http://www.juvenxu.com/2010/05/07/reproducibility-of-maven-build/
这是构建生成的文件目录,例如编译后的class代码
配置使用UTF-8编码就可以了:http://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html
你可能需要管理员权限
你需要构建所有模块
@juvenxu
许老师您好,我先谢谢您。本地执行是绝对没有问题的,您的意思我明白,但是我的项目是web项目需要先启动tomcat,然后才能执行测试啊,也就是mvn test。然而我执行的流程是clean,compile,tomcat:run,test,一共4个步骤,但是在执行到tomcat:run的时候就卡在哪里,那我的第四步test,就不会去执行了,怎么办呢?(我说的4个步骤是在Add build step栏里,建立了4个Goals,而不是一个Goals里输入了上面的4个命令)还有就是如果一个任务里执行的是tomcat:run,卡在哪里的话,那这个任务什么时候才是success呢?难道说这个任务本身就不存在success?如果是一个web项目要测试的话,在hudson中配置任务时,该怎么去配,真心的希望许老师能给我指点一下。再次真心的谢谢您。
@huijun.zheng
你需要配置这个参数:http://mojo.codehaus.org/tomcat-maven-plugin/run-mojo.html#fork,当然,别忘了测试完毕后停止tomcat
61页第一行:
accountEmailService.sendMail(“test@juvenxu.com”, “test2@juvenxu.com”, subject, htmlText );
应为:
accountEmailService.sendMail( “test2@juvenxu.com”, subject, htmlText );
许老师,
您好!
想请问下,MAVEN 如何引入其他项目的模块 例: 假如项目 A (svn 地址 :http://192.168.1.1/svn/telecom/P_A/code/trunk/A/) 想引入项目B( svn 地址 :http://192.168.1.1/svn/telecom/P_B/code/trunk/B/Core_Util ) 的 Core_Util 模块,
这时应该如何编写 pom.xml ,因为 B项目有其他项目组在开发与维护 包含 Core_Util 模块 ,
而你书个的,聚合是同一项目中的不同模块合成的,而这时是不同项目,但有一些共用了。
许老师,
您好!
想请问下,MAVEN 如何引入其他项目的模块 例: 假如项目 A (svn 地址 :http://192.168.1.1/svn/telecom/P_A/code/trunk/A/) 想引入项目B( svn 地址 :http://192.168.1.1/svn/telecom/P_B/code/trunk/B/Core_Util ) 的 Core_Util 模块,
因为 B项目有其他项目组在开发与维护 包含 Core_Util 模块 ,
而你书个的,聚合是同一项目中的不同模块合成的,而这时是不同项目,但有一些共用了。
想请问下这时应该如何编写 pom.xml ,
大概看了一遍书,感觉里开发越来越远了,是不是使用了maven开发就要事先知道要使用什么包,而不是像以前一样,先写出类再根据提示导包呢?如果不是真的好有难度啊
如果没有引入依赖进入classpath,有什么工具能提示你导入包呢?
@juvenxu
哦 确实是这样 哈哈 之前都是老师 或资料告诉用什么包 直接一导就可以了 现在碰到了陌生的框架就不知所措了,现在公司都在用maven真的要好好学学
许老师,我在看您Maven实战的第12.5.2这一节的时候,在执行mvn cargo:redeploy命令的时候,出现
[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.0.6:redeploy (default-cli) on project UFriendMAP: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.0.6:redeploy failed: Failed to redeploy [G:\Workspaces\UFriendMAP\UFriendMAP\target\UFriendMAP.war]: http://localhost:9999/manager/list/ -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.0.6:redeploy (default-cli) on project UFriendMAP: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.0.6:redeploy failed: Failed to redeploy [G:\Workspaces\UFriendMAP\UFriendMAP\target\UFriendMAP.war]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:211)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:140)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:316)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:153)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:451)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:188)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.0.6:redeploy failed: Failed to redeploy [G:\Workspaces\UFriendMAP\UFriendMAP\target\UFriendMAP.war]
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:116)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:195)
… 19 more
Caused by: org.codehaus.cargo.container.ContainerException: Failed to redeploy [G:\Workspaces\UFriendMAP\UFriendMAP\target\UFriendMAP.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:195)
at org.codehaus.cargo.maven2.DeployerRedeployMojo.performDeployerActionOnSingleDeployable(DeployerRedeployMojo.java:40)
at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionOnAllDeployables(AbstractDeployerMojo.java:129)
at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDeployerMojo.java:58)
at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:268)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
… 20 more
Caused by: java.io.FileNotFoundException: http://localhost:9999/manager/list/
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:504)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:622)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:635)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176)
… 25 more
[ERROR]
异常信息,请问许老师这是怎么引起的?我的POM中配置文件如下:
org.codehaus.cargo
cargo-maven2-plugin
1.0.6
tomcat7x
remote
runtime
tomcat
123
http://localhost:9999/manager
在settings.xml文件中配置:
org.codehaus.cargo
恳求徐老师帮忙,谢谢您。
许老师,我在看您的Maven实战的12.5.2章节,在执行mvn cargo:redeploy 的时候,会出现下面的异常:
Caused by: java.io.FileNotFoundException: http://192.168.1.109:8081/manager/list,我在POM文件配置cargo.tomcat.manager.url是http://192.168.1.109:8081/manager,为什么会提示上面的异常信息呢?希望许老师能帮帮我,谢谢您。
这个原文没错吧?
我下载源码之后,尝试在ch-8 中的 parent项目中,运行mvn install , 报permission denied.
我想就是GreenMail监听25端口的问题,因为我是在linux 中,是否可以考虑这些用户
然后换成其他大于1024端口,避免权限问题?