【转载】让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

 

posted @ 2015-10-11 19:38  Xwanted  阅读(296)  评论(0)    收藏  举报