当前位置: 首页 > 知识库问答 >
问题:

如何获取命令行属性以覆盖maven属性

阎阳
2023-03-14

我有一个pom文件,其中某些依赖项的版本号依赖于pom文件设置中指定的项目版本属性。我可以通过命令行覆盖它吗?如果可以,如何操作?

说来话长:

我们目前正在将我们的项目转换为maven,但我们还没有完全实现。有多个模块仍然没有使用maven构建,因此是我们项目中的依赖项(它们通过ant构建到jar中)。发布后,我们希望构建所有这些jar,并包含与父项目相同的版本号。对于发布,执行两个步骤(直到我们可以使用maven获取所有内容)

  1. jar内置于ant中,具有正确的发布版本(12.12.4.0)
  2. maven发布插件用于将项目部署到我们的工件库

在第二步中,命令行参数用于指定版本:

mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0

我希望使用指定的版本更新pom文件。但是,当运行此命令时,pom文件中的版本(12.12.4.0-SNAPSHOT)仍在使用中。这会导致“检查快照的依赖项和插件”步骤失败,我需要从maven version属性解析仍然使用12.12.4.0-SNAPSHOT版本的jar。

这使我想到了最初的问题,即如何覆盖它,使版本解析为命令行上指定的版本。可以让我越过这一点的附加问题是:如何允许maven release插件在检查之前更新pom文件?如何跳过快照检查(不可取)

我可以在pom文件中创建一个可以覆盖的属性,但是我必须在pom文件的两个地方维护版本号。

思潮?

共有2个答案

凌联
2023-03-14

这是另一个选项:

<Logger name="com.mypackagename" level="${env:LOG_LEVEL:-error}" additivity="false">
  <AppenderRef ref="Console-Appender"/>
</Logger>

${env:LOG_LEVEL:-error}表示env=环境变量,LOG_LEVEL=env名称,-error=默认级别错误。

池麒
2023-03-14

将参数从命令行直接放入pom,例如:

mvn干净安装-Dtestng.version=6.3.1

例子:

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0</version>
        <name>test</name>
        <properties>
                <testng.version>6.4</testng.version>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.testng</groupId>
                        <artifactId>testng</artifactId>
                        <version>${testng.version}</version>
                        <scope>test</scope>
                </dependency>
        </dependencies>
</project>

如果你正常运行它,将使用测试版本6.4。但是如果你像这样运行它:mvn净安装-Dtestng.version=6.3.1将使用测试版本6.3.1。

请参阅在詹金斯中设置 Maven 参数

 类似资料:
  • 问题内容: 我对使用Maven时通过命令行为某些单元测试设置属性的正确方法感到困惑。有很多问题(例如,在不设置MAVEN_OPTS环境变量的情况下指定Maven内存参数,是否可以通过命令行将jvmargs传递给maven,如何为Junit单元测试设置JVM参数?)碰到这个问题,但是没有人正在寻找我的答案。 我想将属性设置为某个值,但是我不想设置环境变量。 我可以使用以下属性在我的pom文件中配置s

  • 我有几个POJO,这将有一个货币数额。我的想法是创建一个通用对象(由货币和值组成),然后每当我想在我的POJOs中表示一个货币金额时,就会使用它: 由于将在多个POJO中使用,我无法用注释和属性,因为在所有情况下,列名并不总是相同的。有没有办法注释属性(如上例中的)以提供和属性的列名,以便jOOQ在映射/取消映射POJO时理解它们,类似于Hibernate解释请问?

  • 我想覆盖我在Quarkus应用程序的配置文件中配置的属性。 我怎样才能做到这一点?

  • 我正在尝试从ADB命令获取设备属性。我如何能够通过运行示例android应用程序获得这些值。我多么希望使用adb shell命令本身使我的生活更轻松。下面是我将完成示例应用程序的方法,但我需要相应的adb命令 设备制造商 *请注意,我的设备没有根目录,我不知道如何根目录设备以获取这些值:-)* 但是,我可以得到操作系统版本。但是我想要整数形式的SDK版本。我想要18个代替4.2个。2.

  • 问题内容: 类 两次作为两个不同的属性嵌入其中:和 在使用Persistence生成数据库架构时,应该分别提供两列。而是抛出一个异常: org.hibernate.MappingException:实体映射中的重复列:事件列:代码 如何覆盖每个属性的默认列名? 问题答案: 使用,这是一个示例 在您的情况下,它看起来像这样

  • 假设我的目标如下: 我也有一个列表: 我想用一些“默认值”覆盖“foo-value”和“baz-value”(列表中出现的键的值)。所以我有: 如果我有一个不同的对象,比方说 我不想添加任何默认值,所以spread运算符不适用于我。