在特定执行阶段忽略maven依赖

时间:2010-09-15 18:49:53

标签: maven-2 dependencies ignore

我有一个(自定义)嵌入式jetty启动器,我一直用它来开发/测试我的web应用程序(在移动到maven之前)。

我能够欺骗m2eclipse将maven托管依赖项放到启动器类路径的库中(当从eclipse运行时)。我通过为同一个工件创建两个依赖项来做到这一点:一个类型为“war”,另一个类型为“jar”(“jar”依赖性使m2eclipse成为我想做的事情)。

然而,当找不到战争项目的jar时,启动器的maven-assembly-plugin失败。

问:我可以告诉maven在运行包目标时忽略jar依赖吗?

更详细的背景资料: 在搬到maven之前,我有一个webapp.war项目和一个jetty-launcher项目;我有一个eclipse项目依赖项,因此启动程序在运行时具有所有的war依赖项。一切都是在测试变化所需的ide(没有重新构建warfile)之外运行的。

转移到maven之后,这种方法已经超越了,因为m2eclipse知道不包含jar依赖的库(因为它们是战争范围)。

2 个答案:

答案 0 :(得分:1)

我通过使用单独的.m2 / settings-eclipse.xml(用于eclipse)解决了这个问题,我在其中覆盖了默认的依赖类型。所以在我的发射器POM中,我有:

<dependency>
  <groupId>com.myco</groupId>
  <artifactId>my-server</artifactId>
  <version>${project.version}</version>

  <!-- here we want eclipse to see "jar" but command line to see "war" -->
  <type>${jetty.launcher.workaround}</type>
</dependency>

我仍然想知道是否有直接解决原始问题的方法。

答案 1 :(得分:-2)

这可能为时已晚,但这对某些人有帮助:

<optional>true</optional>
</dependency>

因此,将<optional>true</optional>添加到您的pom.xml