【发布时间】:2017-02-08 11:27:12
【问题描述】:
简介
在我继承的一个特定项目中,我们有一个作为jar 文件的依赖项,它是simple-capcha 的自定义包装器/servlet。
他们告诉我对小包装验证码项目进行特定更改,并生成JAR - 然后在主项目中进行测试。
然后我必须让第二个主项目使用新的JAR 作为依赖项(而不是位于公司工件上的文件)。
当前进程
下面我描述了我正在使用的过程,我觉得效率非常低。
我使用 maven 生成小项目中的 jar 文件。
然后我转到本地 .m2 存储库并将那里存在的 JAR(从 artifactory 下载)替换为新的。
<dependency>
<groupId>test.company.something.captcha</groupId>
<artifactId>captcha-common</artifactId>
<version>0.90</version>
<!-- <scope>system</scope>
<systemPath>C:/Users/mbakopoulos/Dropbox/_captcha/target/captcha-common-0.90.jar</systemPath>-->
</dependency>
最后,我取消注释并注释 <scope> 和 <systemPath> 标记(启用自动导入),以便 intellij 检测到 2 个更改,并强制 maven 从本地 .m2 存储库中提取 @987654330 @在项目中。
最后,具体的JAR 包含一个HTTPServlet,它实际上是在主项目的web.xml 中使用的。在某些时候,当我更改依赖版本时,在JBOSS 部署war 后,我得到了classNotFoundException:
<servlet>
<servlet-name>TheCaptcha</servlet-name>
<servlet-class><servlet>
<servlet-name>StickyCaptcha</servlet-name>
<servlet-class>test.company.something.CaptchaServerServlet</servlet-class>
<init-param>
<param-name>width</param-name>
<param-value>250</param-value>
</init-param>
<init-param>
<param-name>height</param-name>
<param-value>60</param-value>
</init-param>
</servlet>
问题
开发和测试通常作为依赖项包含/包含的依赖项的最佳方法是什么?我可以去掉 pom.xml 条目,并将另一个项目作为模块包含进来吗?
我正在使用 IntelliJ IDEA 2016。
最后,有没有办法将两个模块/项目连接在一起? 我怀疑应该有。
【问题讨论】:
-
有什么原因你不只是制作一个新版本
0.90-A或类似的? -
@vikingsteve 我最初是这样尝试的,并使用
scope和systemPath包含依赖关系,但是当我调试主项目时我得到了classNotFoundException。所以我放弃并使用相同的版本/文件名。 -
你能完全放弃
scope和systemPath并将具有新版本(0.90-A或其他)的工件放入C:/Users/mbakopoulos/.m2/repository/test/company/something/captcha/captcha-common。只要那是默认的本地存储库,您的构建应该会发现它没问题。也删除那里的任何lastUpdated引用。 -
@vikingsteve 我可以看到这将如何避免覆盖以前的 JAR 版本 - 更清洁/更有条理。每次我将更新的
.jar文件放入m2存储库时,我是否仍需要编辑pom.xml依赖项?有没有办法同时连接两个模块/项目?
标签: java maven intellij-idea jar lib