【转载】让Maven By Example中源代码事例运行成功
转载自:http://blog.csdn.net/greencacti/article/details/15028989
背景:
最近因为项目需要,突击学习了一下《Maven By Example》,书介绍的非常好,事例也很不错,为了巩固学习过程,我拿最后一个事例过来调试,但是期间遇到很多问题,现把过程总结如下:
1. 项目下载
可能我用的书版本比较旧,原书Chapter 7:Multi-module Enterprise Project中提供了源代码下载地址为:
http://www.sonatype.com/books/mvnex-book/mvnex-examples-0.5-project.zip
但该地址无法访问,后在作者的网站找到该书的电子版,书的完整链接如下:
http://books.sonatype.com/mvnex-book/reference/
Chapter7的源代码下载地址为:
http://www.sonatype.com/books/mvnex-book/mvnex-examples.zip
2. 项目导入
2.1. 从mvnexbook-examples-1.0目录中拷贝ch-multi-sprint的文件夹到你的工作目录
2.2. 用IntelliJ创建一个Maven Project的Empty Project
2.3. 当进入Maven Project以后,把ch-multi-sprint作为一个IntelliJ Module导入
3. 在顶层目录执行mvn clean,会遇到如下warning
L-BAOMINW-M:ch-multi-spring baominw$ mvn clean
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.sonatype.mavenbook.multispring:simple-command:jar:0.8-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 20, column 15
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.sonatype.mavenbook.multispring:simple-webapp:war:0.8-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.mortbay.jetty:maven-jetty-plugin is missing. @ line 56, column 15
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
以上warning是因为Maven对于pom.xml语法检查严格导致的,给上面两个出现warning的plugin加上version就能解决,具体怎么得到version信息,请使用如下命令:
mvn help:describe -DartifactId=maven-surefire-plugin -DgroupId=org.apache.maven.plugins
mvn help:describe -DartifactId=maven-jetty-plugin -DgroupId=org.mortbay.jetty
以下是给maven-jetty-plugin增加version的事例:
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
再次执行mvn clean,应该就没有任何warning了
4. 在顶层目录执行mvn install,会出现很多warning如下:
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ simple-model ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
在simple-parent目录中的pom.xml中增加如下的标绿的配置可以消除这些warning:
<name>Multi-Spring Chapter Simple Parent Project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
5. 在顶层目录再次执行mvn install,发现只剩下了一个warning如下:
[INFO] ------------------------------------------------------------------------
[INFO] Building Multi-Spring Chapter Simple Weather API 0.8-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
将simple-weather目录中的pom.xml中如下内容
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<scope>test</scope>
</dependency>
修改为:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<scope>test</scope>
</dependency>
再次执行mvn install,则所有的warning都应该没有了
6. 在simple-webapp目录中执行mvn hibernate3:hbm2ddl
注意:一定要做simple-webapp目录中执行,刚开始我没有注意,一直在顶层目录执行,总是报如下错误:
[INFO] Multi-Spring Chapter Parent Project ............... FAILURE [0.838s]
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project parent: There was an error creating the AntRun task. NullPointerException -> [Help 1]
当切换到simple-webapp目录中执行mvn hibernate3:hbm2ddl的时候会报如下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.1:hbm2ddl (default-cli) on project simple-webapp: Could not get ConfigurationTask. -> [Help 1]
将simple-webapp目录中的pom.xml中
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.1</version>
修改为:
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
问题解决。
7. 执行mvn jetty:run

浙公网安备 33010602011771号