Maven 使用问题解决 一

来源:互联网 发布:android 网络通信方式 编辑:程序博客网 时间:2024/05/22 17:17

在使用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,所以,有时候手工能跑的通,但是使用插件却跑不通,多半是这个原因;

原创粉丝点击