gpt4 book ai didi

java - 在 Maven 中设置外部依赖的最佳方法

转载 作者:行者123 更新时间:2023-11-30 07:28:04 27 4
gpt4 key购买 nike

我希望我能尽可能准确地解释这一点,我想知道我是否正确设置了 Maven 依赖项,或者是否有更好的方法。

我的开发团队的大部分项目都依赖于部署在服务器类加载器上的本地 jar。这个 jar 驻留在这个级别的原因是为了便于在一个地方更新 jar,而无需重新打包使用它的每个项目,假设对它所做的更改是向后兼容的。

我在本地开发中针对 Jetty 开发我的网络应用程序。因此,为了让 Web 应用程序在本地运行,我以这种方式设置依赖项:-

<dependencies>
<!-- Configuring external jar dependency -->
<dependency>
<groupId>com.test.app</groupId>
<artifactId>app-jar</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${env.EXTERNAL_JAR}</systemPath>
</dependency>

...
</dependencies>

<build>
<plugins>
<!-- Configuring Jetty -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<contextPath>/${project.parent.artifactId}</contextPath>
<jettyEnvXml>${env.JETTY_ENV_XML}</jettyEnvXml>
<scanIntervalSeconds>1</scanIntervalSeconds>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>7777</port>
</connector>
</connectors>
<webAppConfig>
<extraClasspath>${env.EXTERNAL_JAR}</extraClasspath>
</webAppConfig>
</configuration>
</plugin>

...
</plugins>
</build>

在这种方法中,我设置了一个指向外部 jar 路径的环境变量,并在我的 pom.xml 中将其引用为 ${env.EXTERNAL_JAR}

经过一些阅读,似乎使用“系统”范围被认为是一种不好的做法。所以,我在 Nexus 中安装了这个外部 jar 并将范围更改为“提供”:-

<dependency>
<groupId>com.test.app</groupId>
<artifactId>app-jar</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>

这使我能够正确编译我的项目,但我不确定我是否有可能完全摆脱“EXTERNAL_JAR”环境变量,因为 Jetty 仍然需要它才能使运行时正常工作。我的做法是使用“提供的”范围有点乏味并且需要更多工作,因为我现在需要记住在修改 Nexus 时更新 jar,并且我仍然需要更新位于环境变量指向的路径中的 jar。

有没有办法让我通过 maven 依赖将外部 jar 暴露给 Jetty,而不是在构建 war 文件时打包到项目中?

您对此有何建议?我应该坚持使用“系统”范围以便我只需要在一个地方更新 jar,还是应该使用“提供的”范围?或者是否有更好的方法来做到这一点?

非常感谢。

最佳答案

您应该能够向 jetty 插件添加依赖项。然后我有项目本身的提供范围。

http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin

<project>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<systemProperties>
<systemProperty>
<name>logback.configurationFile</name>
<value>./src/etc/logback.xml</value>
</systemProperty>
</systemProperties>
</configuration>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.15</version>
</dependency>
</dependencies>
</plugin>
...
<project>

关于java - 在 Maven 中设置外部依赖的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9333202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com