我正在尝试启动一个 Maven 项目,我总是在 Jetty 中手动启动该项目。为此,我正在使用 maven-jetty-plugin。
执行 jetty:run 时似乎一切正常,除了 Jetty 没有找到 POM 中定义的依赖项。
如果我运行 jetty:war,则使用依赖项正确构建战争,这样就可以了。为什么 jetty:run 不包括我在 WEB-INF/lib (或其他任何地方)中的库?
我正在尝试启动一个 Maven 项目,我总是在 Jetty 中手动启动该项目。为此,我正在使用 maven-jetty-plugin。
执行 jetty:run 时似乎一切正常,除了 Jetty 没有找到 POM 中定义的依赖项。
如果我运行 jetty:war,则使用依赖项正确构建战争,这样就可以了。为什么 jetty:run 不包括我在 WEB-INF/lib (或其他任何地方)中的库?
如果您需要 Jetty 的依赖项,该依赖项位于主 Maven 存储库以外的某个位置,请添加以下内容:
<pluginRepositories>
<pluginRepository>
<id>repo-id</id>
<url>http://my_other_repo.edu</url>
</pluginRepository>
</pluginRepositories>
我不相信 Jetty 会在你的 POM 中使用现有的存储库。
这实际上取决于您定义的依赖项。例如,如果您在 jetty.xml 文件中定义了 JNDI 资源,您将需要该jetty-plus
依赖项。但是,您只需要此依赖项来执行插件。插件可以有<dependencies/>
,这就是你需要定义它的地方。
如果您有一个插件无法找到的特定于 Jetty 的类的列表,那么查找依赖项的最佳方法是使用 www.jarvana.com 之类的站点。
“依赖项”是指其他项目吗?
如果是这样,您需要在 jetty:run 看到它们之前将它们安装 (mvn:install) 到本地存储库中。
jetty:war 可能正在打包它们并将它们放入 lib 文件夹中,而没有安装到本地存储库中。
对我来说,我的 repo 中有一个 .jar 文件没有被 Eclipse 拾取。我不知道如何在 Eclipse 中修复它,所以我的工作是......
使用以下命令将 .jar 文件的副本添加到不同 groupId 下的 repo(~/.m2 下的不同路径):
mvn install:install-file -Dfile=dhcp4java-1.0.0.jar -DgroupId=a_abc.hack -DartifactId=dhcp4java -Dversion=1.0.0 -Dpackaging=jar
引用新的 groupId ,它只需要为 pom.xml 中的依赖项更新此条目:
<groupId>a_abc.hack </groupId>