对于开发,我使用jetty通过maven(jetty-maven-plugin)运行应用程序,对于我使用tomcat的所有其他部署, 如果我使用jetty maven插件运行我的应用程序,我希望将jetty web-socket(javax-websocket-server-impl)库添加到类路径中,在tomcat中这些是内置的,所以我不需要告诉maven抓住这些库。
所以为了限制这些libs只用于jetty maven插件,我在里面添加了这些库 码头-行家-插件
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<webAppConfig>
<contextPath>/myproject</contextPath>
</webAppConfig>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-server-impl</artifactId>
<version>9.1.0.v20131115</version>
</dependency>
</dependencies>
</plugin>
这应该将jetty websocket libs添加到类路径中,只有当我运行插件时,但它不是,并且我一直没有找到类,如果我将它添加到pom中的主要依赖项,它可以工作,但我做不到这是因为我在tomcat中部署时不想在我的部署文件中使用jetty库,请更正我,告诉我如何将这些库仅限于执行此插件。
答案 0 :(得分:2)
依赖项仅适用于插件执行,而不适用于应用程序。来自pom plugin documentation:
依赖项: POM中可以看到很多依赖项,并且它们是所有插件元素块下的元素。依赖项具有与该基础构建下相同的结构和功能。这种情况的主要区别在于,它们不是作为项目的依赖项应用,而是应用为它们所在的插件的依赖项。这样做的好处是可以改变插件的依赖列表,可能是通过排除删除未使用的运行时依赖关系,或者通过改变所需依赖的版本。
您可以使用profiles来在开发计算机上运行时将依赖项添加到类路径依赖项中。