在使用maven中出现了两个问题:
1.指定源文件编码,避免插件输出乱码问题
http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding这个地址有详细的说明;
Adding this element to the POM structure can only happen in Maven 3.x (tracked with MNG-2216 issue):
<sourceEncoding> UTF-8</sourceEncoding>
For Maven 2.x, the value can be defined as an equivalent property
<project.build.sourceEncoding> UTF-8</project.build.sourceEncoding> 2.恼人的软件包 xxxx 不存在问题;
首先是怀疑依赖冲突问题;
http://wolfchina.javaeye.com/blog/239934按这个说法,试了试,没有发现有什么异常;
首先,你要在pom.xml中加上maven-project-info-reports-plugin插件。
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
</plugins>
</reporting>
然后再执行:mvn project-info-reports:dependencies 。生成项目依赖的报表,这样你就能够在报表中找出你版本冲突的相关性依赖了。
最后在相应的dependency中加上exclusions来排除相关的传递依赖。
在执行这个的过程中,出现了outofmemoryerror,设置这个环境变量MAVEN_OPTS=-Xmx512M -XX:MaxPermSize=128M -Dfile.encoding=UTF-8
另外,也可以使用mvn dependency:tree
搞了半天,核对了一下,没有什么异常情况;
问题解决:
真正的问题居然是
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
请仔细的看,<scope>runtime</scope>在这里,你会发现classpath里也有,用eclipse,或者javac都可以编译通过,但是mvn在编译的时候,会把所有runtime的都排除到classpath外,所以会报错,其实那个mvn guide里写的很清楚,只是没有注意;困扰了很久,终于解决了;
3.mvn m2eclipse使用的maven究竟是哪个版本?
在m2eclipse的faq里写的很清楚,是emedd的maven,我的是maven3,所以,有时候手工能跑的通,但是使用插件却跑不通,多半是这个原因;