当前位置: 首页 > 面试题库 >

在Maven中,如何在运行时动态生成属性值?

韩良策
2023-03-14
问题内容

在maven中,使用以下语法在pom中设置属性非常容易:

...
<properties>
  <myValue>4.06.17.6</myValue>
 </properties>
...

现在,我需要构建一个取决于pom版本的属性。为了创建属性,我想执行以下操作(java伪代码):

String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0],  splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6

它应该是动态的,因为它在我们的存储库中用作标记名,并且必须始终与工件的版本同步。

任何想法如何创建该“动态”属性?


问题答案:

Mojo的Build-Helper Maven插件可以在这里为您提供帮助。

有许多目标可用于帮助转换属性。

  • 构建帮助器:正则表达式属性

  • build-helper:解析版本

  • build-helper:发布版本

正则表达式属性可能是您想要的,但是如果您的版本号符合“标准”,则另外两个可能会节省您的时间。

要使用正则表达式属性目标,您需要执行以下操作

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>regex-property</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>tag.version</name>
              <value>${project.version}</value>
              <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.(-SNAPSHOT)?$</regex>
              <replacement>V$1_$2_$3_P$4</replacement>
              <failIfNoMatch>true</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

注意:我的regex可能会略有偏离,因此您应该测试上述内容。

注意:该属性值仅在此执行绑定到的阶段之后才可用于执行。绑定到的默认阶段是,validate但是如果您处于不同的生命周期(例如站点生命周期),则该值将不可用。



 类似资料:
  • 问题内容: 我正在尝试使一个Maven托管项目在命令行上运行。 我在pom.xml中有一组依赖关系,这些依赖关系随后被下载并安装在〜/ .m2 / repository /中。我在pom中包含了必要的配置,以将类路径添加到jar清单中。 现在的问题是我试图这样运行jar:java -jar project-SNAPSHOT.jar。 Java找不到下载的依赖项(我想是因为列出的依赖项在清单中没有路

  • 该实体 存储库 创建Q类 我做错了什么?我使用的querydsl版本正确吗?我是不是应该回到mysema的建筑里去?是否有类似于JPA世界中的用于此目的的存储库? 提前道谢!

  • 问题内容: 我有一个Python类,其属性名为:date1,date2,date3等。 在运行时,我有一个变量i,它是一个整数。 我想要做的是基于i的值在运行时访问适当的date属性。 例如, 如果i == 1,我想访问myobject.date1 如果i == 2,我想访问myobject.date2 我想为类而不是属性做类似的事情。 例如,我有一堆类:MyClass1,MyClass2,MyC

  • 请找到我的pom.xml 4.0.0 @runwith(cucumber.class)@cucumberoptions(features={“c:\users\rishabh patel\eclipse-workspace\cucumberreports\feature”},glue={“stepdefinition”},plugin={“pretty”,“json:target/cucumber

  • 问题内容: 我正在尝试根据此文档http://wtforms.simplecodes.com/docs/1.0.2/specific_problems.html#dynamic-form-composition在WTForms中生成具有动态字段的表单 我有这个子窗体类,它允许用户从列表中选择要购买的物品: 购物商品将有多个类别,因此我想根据用户选择的类别生成一个动态选择字段: 但出现以下错误: 我

  • 问题内容: 我在数据库中有几条记录,它们想要形成如下URL: 该会从数据库中拉出。 有什么办法可以在flask中取出吗? 问题答案: 你可以将变量名放在views.py函数中。例如: 为了使数据库信息显示在你的站点上,你需要将参数传递到模板中。因此,在模板中,你将引用以下参数: 然后,当你访问mysite.com/post/anything_here时,“ anything_here”将进入你的函