只有在运行插件时才能在classpath中使用依赖项

时间:2015-02-22 19:12:43

标签: maven maven-plugin

对于开发,我使用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库,请更正我,告诉我如何将这些库仅限于执行此插件。

1 个答案:

答案 0 :(得分:2)

依赖项仅适用于插件执行,而不适用于应用程序。来自pom plugin documentation

  

依赖项: POM中可以看到很多依赖项,并且它们是所有插件元素块下的元素。依赖项具有与该基础构建下相同的结构和功能。这种情况的主要区别在于,它们不是作为项目的依赖项应用,而是应用为它们所在的插件的依赖项。这样做的好处是可以改变插件的依赖列表,可能是通过排除删除未使用的运行时依赖关系,或者通过改变所需依赖的版本。

您可以使用profiles来在开发计算机上运行时将依赖项添加到类路径依赖项中。