Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

maven问题记录

来源: yourenyouyu2008 分享至:

1)profile对eclipse project不起作用。定义的默认proflie中的依赖在eclipse project 的classpath中显示不出来。

对maven项目做testng时不能使用proflie引入依赖。

更正: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中


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史