1

介绍

在我继承的一个特定项目中,我们有一个作为jar文件的依赖项,它是simple-capcha. 他们告诉我对小型包装验证码项目进行特定更改,并生成JAR- 然后在主项目中对其进行测试。

然后我必须让第二个主项目使用新JAR的作为依赖项(而不是位于公司工件上的文件)。

当前流程

下面我描述我正在使用的过程,我觉得非常低效。我使用 maven 生成jar小项目中的文件。然后我转到本地 .m2 存储库并用新的 JAR 替换那里存在的 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>and<systemPath>标记(启用自动导入),以便 intellij 检测到 2 个更改,并强制 maven 从本地.m2存储库中提取替换maven:library项目中的 。

最后,特定的 JAR 包含一个HTTPServlet实际在web.xml主项目中使用的 JAR。在某些时候,当我更改依赖版本时,我classNotFoundExceptionJBOSS部署后得到war

<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。

最后,有没有办法将两个模块/项目连接在一起? 我怀疑应该有。

4

1 回答 1

2

将我的评论移至此处的扩展答案。

首先,具有相同版本号的任何已发布 maven 工件的多个不同版本会带来很多问题!如果可能,请避免这样做。编号系统始终可以扩展(例如或或)。0.90.10.90-CUSTOM-10.09-A

其次,使用systemPath依赖是非标准的。尝试“正常”使用版本,以便它们在M2_HOME\.m2\repository本地工作时存在于您的内部(并且可以上传到您的工件或连接以与同事共享)。

现在,就自动化构建/测试过程而言,您有几个选择。每次重新构建依赖项时,您都可以构建0.90.10.90.2更新该部分的版本。<dependency>

或者您可以使用快照版本控制。0.90.1-SNAPSHOT向 Maven 表明这是一个快照构建。每当您使用快照依赖项重建项目时,它都会查看该依赖项是否已更改。

最后,您可以将依赖项作为子模块移动到与主项目相同的项目中。然后,您不必在项目之间定义显式依赖关系。

希望这可以帮助...

于 2017-02-08T12:11:02.303 回答