2009-09-16 84 views
2

我想在部署时排除一个依赖项,当我在本地使用jar时需要它,但不应该在部署的jar中。有没有办法做到这一点?maven deploy排除

回答

1
 
<profile> 
    <id>localProfile</id> 
    <activation> 
     <property> 
      <name>!deploy</name> 
     </property> 
    </activation> 
    <dependencies> 
     <dependency> 
      ... 
     </dependency> 
    </dependencies> 
</profile> 

当我与

MVN部署-D部署= 0

运行它没有这种依赖性

+0

尽管这种方法有效,但Maven已经提供了一种避免部署依赖关系的方法(请参阅我的回答),如果您忘记将属性包含在构建命令中,则会出现意外部署该jar的风险。为什么提供的范围不适合你? – 2009-09-16 12:09:47

+0

提供的范围总是排除jar,我只想在部署时排除它。 – IAdapter 2009-09-16 12:35:21

+0

你能解释一下你的解决方案吗?您是否必须创建多个配置文件才能执行此操作?我希望有一个更简单的解决方案^^([我的问题](http://stackoverflow.com/questions/36398827/how-to-configure-maven-project-such-that-dependencies-have-to-be-提供-后/ 36398891#36398891)) – displayname 2016-04-04 09:27:49

0

也许一个好的解决方案是用<scope>provided</scope>来设置依赖关系。这样,依赖关系将不会被部署。

然而,在本地,你将需要添加的依赖在你的classpath ...

3

这取决于你的意思是什么“在本地使用的罐子”。

如果您的意思是您不希望该jar包含在任何包中,则可以将依赖项的scope设置为provided。此范围仅在编译和测试类路径中可用,且不是传递性的。这个范围的依赖不会包含在战争/耳朵中。

<dependency> 
    <groupId>some.groupid</groupId> 
    <artifactId>my-dependency</artifactId> 
    <version>1.0.0</version> 
    <scope>provided</scope> 
</dependency> 

如果你的意思是你不想要的罐子被捆绑到与组件插件内置分布,可以configure the assembly排除特定的依赖。

+0

这个答案完全忽略了一点罐子 - OP并不想排除依赖*总是*。 – displayname 2016-04-04 09:25:39