避免在Maven中重复

强尼·拉(JonnyRaa)

我有一个带有一些配置文件的pom。对于这些配置文件之一,我想添加一个服务器端测试代码模块,以便在某些javascript集成测试中查询数据库。

我不希望发布此代码,因为它会膨胀,并且可能会引入一些安全问题。

我们当前的设置是基本上有2个主要配置文件,它们指定了自己的不同模块列表以及相当长的属性列表。然后,我们还有一个缩小配置文件,可以针对某些版本运行。

这可以通过使用-P标志并提供多个来实现:例如 -P firstMainProfile,Minification

新的配置文件仅需要添加一个模块,但是取决于其他一些模块和某些属性。我希望我能够做到这一点:

    <profile>
        <id>Test</id>
        <modules>
            <module>TestCode</module>
        </modules>
    </profile>

然后在具有它所依赖的模块的那个之后运行它。例如

-P firstMainProfile,Test,Minification

但是,这不起作用。在尝试构建时,它抱怨无法找到依赖项。

我可以复制整个配置文件并添加此额外的模块,但这会引起我的维护麻烦,并且由于要接受/集成,我希望它的设置方式与其他方式完全相同。

请帮忙!我可以使用个人资料来完成这项工作吗?我是否需要对子pom进行操作以列出依赖项?当前看起来像这样:

<parent>
    <artifactId>artifact</artifactId>
    <groupId>something</groupId>
    <version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>TestCode</artifactId>

更新资料

我以为我已经解决了这个问题,但实际上我所做的就是将问题进一步推向前进。该项目有一个Web模块,据我了解,它基本上就是在说战争文件中包含的内容。直到我将其添加为该项目的依赖项之后,我的新模块才投入使用。但是,即使我没有明确地构建它,现在也要构建并交付新模块,这对我来说没有意义,而且与我想要的相反。

它似乎在构建时就存储在我的m2目录中,因此即使我不构建它也会从那里被拉出。

所以现在看来​​我需要复制Web项目来更改要部署的内容?有什么方法可以使依赖成为条件,以避免必须这样做吗?

强尼·拉(JonnyRaa)

需要执行一系列很长的步骤。

在新模块中添加对其他模块的依赖

我想当我将导入添加到另一个项目的类中时,我认为IDEA会整理项目的依赖关系。

我需要将其添加到我的新pom中:

<dependencies>
    <dependency>
        <groupId>group</groupId>
        <artifactId>myOtherProject</artifactId>
    </dependency>
</dependencies>

将有关依赖项的元信息添加到父pom

我还需要在依赖项管理的父pom中添加一个依赖项,以定义其他版本的版本。

向部署项目添加“依赖”

然后,我还需要向由特定配置文件激活的webapp / war部署pom添加一个依赖项(这似乎是在maven中具有条件的唯一方法?)。

避免重复

幸运的是,似乎依赖项列表是可加的,因此,如果您执行以下操作:

<dependencies>
    a
    b
    c
</dependencies>

<profiles>
    <profile>
        <id>Test</id>

            <dependencies>
                d
            </dependencies>
    </profile>
</profiles>

a,b,c,d如果使用配置文件“ test”,则最终会导致依赖性因此,您不必全部复制粘贴并定义2个配置文件即可添加一个以上的依赖项。

当您在Maven中使用其他列表时,我也似乎在使用相同的加性原理。

我正在合并一组基本模块(来自1个配置文件)和我的测试模块,似乎可以找出正确的构建顺序。

我的新个人资料如下所示。

    <profile>
        <id>Test</id>

        <modules>
            <module>TestCode</module>
        </modules>

        <properties>
            <environment>test</environment>
        </properties>
    </profile>

因此,我只指定差异(只要它们是可加的!)。

花了很长时间才弄清楚,但即使目前尚不清楚发生了什么,我也对该解决方案感到满意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章