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

从属性文件读取Maven SCM url值

慕高格
2023-03-14

这是我的pom。xml具有如下scm配置

<scm>
 <url>${my.scm.url}</url>
</scm>

我有一个属性文件,我正在使用properties maven plugin读取该文件,它的值为${my.scm.url},我还使用buildnumber maven plug从SVN获取最新版本。

问题是buildnumber-maven-plugin抛出了无效的scm url错误,但是,当我用实际url替换${my.scm.url}到我的svn repo时,它工作得很好。

如何在不硬编码scm url的情况下成功执行?

PS:我使用< code>mvn clean install命令运行构建。

共有2个答案

朱宜
2023-03-14

因为你没有发布POM文件,所以我有点怀疑。

显然,顺序很重要,您必须首先加载属性。也就是说,看看mojo,我不确定设置属性是否等同于设置-D。

如果您进行了mvn-Dscm.url=干净安装,那么该值将在那里,因为它被定义为mvn JVM。根据评估${scm.url}的时间点,如果是在属性mojo有机会运行之前,那就太晚了。

如果您使用可以在mvn调用之前加载属性的CI工具(即JenkinsHudson),则定义变量。

我为我的构建使用了buildNumber mojo,因为我为我的快照工件自动生成了buildNumbers。事情发生的顺序:

  1. 此作业的属性文件从Jenkins master下载到slave。
  2. Jenkins插件将属性文件加载到作业中。
  3. maven构建开始时,在调用mvn之前已经定义了构建号(同样,行为类似于-D),并且我的构建号被合并到我的工件版本中。
  4. buildNumber.mojo使属性文件的buildNumber递增。
  5. 属性文件复制回Jenkins master

我还想在maven中加载属性文件,并让它动态地“更新”工件id,但是到那时,Maven已经进行了评估;因此,我必须事先做这件事。

希望这有帮助。

杜浩壤
2023-03-14

问题可能是由于插件的运行顺序造成的。以下方法应该有效:

  1. 属性-maven-plugin绑定到初始化阶段
  2. 在POM中的插件配置之后,添加buildnumage-maven-plugin插件
  3. 在前两个之后,放入buildnumage-maven-plugin插件(默认情况下绑定到初始化阶段)。

现在,所有3个插件都应该以正确的顺序运行了(你可以从日志中查看)。或者,您可以将绑定到不同的阶段,以确保它们以正确的顺序运行,但以上应该足够了,并且符合< code>initialize阶段的目标(初始化构建状态,例如设置属性或创建目录)。

 类似资料:
  • 问题内容: 在angularJS中,如何从属性文件中读取值? app.js: 问题答案: 如果是驻留在Web服务器上的文件,则只需执行以下操作: 您可以在此处查看示例: http://plnkr.co/edit/3Ne3roFOwcfVmg2mgnUr?p=preview

  • 问题内容: 我正在用弹簧。我需要从属性文件中读取值。这是内部属性文件,而不是外部属性文件。属性文件可以如下。 我需要以传统方式从属性文件中读取这些值。如何实现呢?Spring 3.0是否有最新方法? 问题答案: 在你的上下文中配置PropertyPlaceholder: 然后,你引用bean中的属性: 编辑:更新了代码以使用逗号分隔的多个值来解析属性: 如果那不起作用,则可以定义一个带有属性的be

  • 问题内容: 我创建了一个REST Web服务,在其中创建了config.properties文件来存储和检索整个应用程序中的一些用户名和密码。我将其存储在/src/main/resources/config.properties中。 当我尝试从eclipse的Java代码加载它时,它工作正常。但是当我将它部署在tomcat中时,它没有加载。我用来加载属性文件的代码是 谁能帮我解决这个问题 问题答案

  • 我试图只使用注释创建Spring bean。我无法从属性文件加载@Bean类的值。 下面是我的代码: 知道我做错了什么吗?

  • 问题内容: 我有以下代码尝试读取属性文件: 我在最后一行有一个例外。特别: 问题答案: 根据你的异常,该值为null,这意味着类加载器未找到你的属性文件。我猜测myProp.properties位于项目的根目录中,如果是这种情况,则需要前面的斜杠:

  • 我正在运行jeter分布式测试。我有很多组合要测试,所以创建了属性文件(. properties)来执行不同的测试。 例如:我有1台主机和2台从机。我将jmx脚本保存在主机中,并将测试数据保存在所有从机中 在所有从机中启动jmeter-server 使用以下命令从master运行分布式测试"jmeter-n-tscript.jmx-pcondition1.properties-R SlaveIP1