我有一个(自定义)嵌入式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依赖的库(因为它们是战争范围)。
答案 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