读书人

maven有关问题记录

发布时间: 2012-08-21 13:00:21 作者: rapoo

maven问题记录

1)maven大大简化了classpath的配置,使得任何java工程的classpath文件都是一样的。

更正:profile对eclipse project起作用 但必须是默认的。

<activation>
????<activeByDefault>true</activeByDefault>
???</activation>

这样不用maven命令就能使用mavne依赖,比如testng使用maven依赖,把testng环境依赖的jar都放到classpath,而真正发布时不应该把这些testng依赖的jar发布,这时发布时使用 dev profile就不会发布测试环境依赖的jar

??<profile>
???<id>unitest</id>
???<activation>
????<activeByDefault>true</activeByDefault>
???</activation>
???<dependencies>
????<dependency>
?????<groupId>org.iata</groupId>
?????<artifactId>ios-test</artifactId>
????</dependency>
???</dependencies>
??</profile>

<!-- 发布环境不依赖测试环境-->
???<profile>
???<id>dev</id>
??</profile>

?

2)版本控制:高版本覆盖低版本。maven会传递依赖,两个不相关的jar都传递依赖了同一个jar,但可能依赖jar的版本不同,这时高版本会覆盖低版本。

3)过滤依赖:由版本控制引入的高版本覆盖低版本,导致使用低版本的jar被迫使用依赖的高版本jar,这可能使用低版本依赖的jar不能正常运行,如果高版本jar运行时不会使用,就可以通过exclusions过滤掉高版本jar。

示例 jpa hibernate实现 3.3.2.ga使用高版本的javasist,导致seam中的javasist错误。

<dependency>
???<groupId>org.hibernate</groupId>
???<artifactId>hibernate-entitymanager</artifactId>
???<version>3.3.2.GA</version>
???<type>jar</type>
???<scope>compile</scope>
???<exclusions>
????<exclusion>
?????<artifactId>javassist</artifactId>
?????<groupId>javassist</groupId>
????</exclusion>
???</exclusions>
??</dependency>

4)provided不会将jar加入到classpath中

读书人网 >软件架构设计

热点推荐