繁体   English   中英

Maven 配置文件过滤与列表

Maven profile filtering with lists

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用 Maven 过滤来创建一个属性文件,该文件将具有给定堆栈的专用属性。

我有一个带有类似属性的 application.properties 文件

elasticsearch.members=${elasticsearch.members}

我有两个配置文件

config.ppd.properties 其中有

elasticsearch.members=ppd-es-01:9700;ppd-es-02:9700;ppd-es-03:9700

config.prod.properties 其中有

elasticsearch.members=prod-es-01:9700;prod-es-02:9700;prod-es-03:9700

我有 2 组服务器,别名为 ppd-es-nn 和 prod-es-nn

这一切都很好。 当我使用 ppd 配置文件生成工件时,我在 application.properties 文件中获得了正确的属性。

但我真正想做的是在 application.properties 文件中以某种方式完成这种连接。 因此,我可以在 application.properties 文件中指定 elasticsearch 服务器的数量和模式。

elasticsearch.members=${environment}-es-[index]:9700;...

有什么方法可以实现吗? 也许将进行过滤的 class 子类化? 这个例子有点做作,因为我想保持简单。 但我想做的一件事是 append 每个服务器别名的部署模式(蓝色或绿色)。 虽然我可以在过滤器文件中执行此操作,但最好在 application.properties 文件中执行此操作,这样过滤器 class 中的拼写错误不会弄乱别名。

1 个回复

我喜欢用于此类任务的 groovy-maven-plugin。 下面是未经测试的,但应该给你的想法。

<properties>
  <!-- these may be overridden on the cmdline -->
  <target.env>ppd</target.env>
  <es.server.count>2</es.server.count>
<properties>

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>groovy-maven-plugin</artifactId>
  <version><latestPluginVersionHere></version>
  <executions>
    <execution>
      <id>build-es-host-list</id>
      <!-- phase must be earlier than process-resources -->
      <phase>validate</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
           <![CDATA[
            def sb = new StringBuilder()
            def targetEnv = project.properties.getProperty('targetEnv')
            def numServers = project.properties.getProperty('es.server.count')
            (1..numServers).eachWithIndex { it, idx -> 
              sb.append("${targetEnv}-es-${idx}:9700")
              if (idx < numServers) {
                sb.append(';')
              }
            }
            project.properties.setProperty('elasticsearch.members', sb.toString())
          ]]>
        </source>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.12</version>
    </dependency>
  </dependencies>
</plugin>

然后,application.properties 文件行需要使用属性:

elasticsearch.members=${elasticsearch.members}

POM 需要为要在文件中使用的计算值启用资源过滤

3 在Maven中使用通用配置文件和过滤器

我有3个模块链接到与此类似的父项目。 Mod3是用于包装目的的模块。 我在mod1和mod2的config文件夹中有一些配置文件。 我需要使用配置文件和过滤器更新这些属性文件中的某些值。 是否可以为这两个模块具有共同的配置文件和过滤器。 如果是这样,我应该在哪个pom.xml中包 ...

4 Maven在过滤中列出活动配置文件

我试图获取Maven中所有活动配置文件的列表,并将它们用作资源过滤中的变量。 特别是当我运行类似 我想在资源过滤中将字符串“ profile1,profile2”公开为变量。 例如,在我的pom.xml文件中,我将maven war插件配置如下,以允许对src / main ...

5 Maven配置文件,使用休眠配置文件进行资源过滤

我正在尝试使用Maven配置文件实例化休眠配置文件。 我的配置文件位于src/main/resources ,在pom文件中,我将该文件夹标记为要在资源过滤中使用。 有趣的是,我可以从属性文件中加载相同的属性,而hibernate在解析配置文件时会抛出异常。 这是我正在使用的代码示例。 ...

6 是否可以获取Maven中活动配置文件的列表?

在Maven中,是否有一种方法可以获取活动配置文件的列表,例如,作为属性还是作为文本文件? 更具体地说,当我运行时: 我想将字符串MyProfile读取到Java程序中。 Maven的3.2.1 谢谢 编辑 我试图配置Maven帮助插件,以便在运行目标res ...

2015-04-03 16:08:12 1 402   maven
7 使用互斥值列表激活Maven配置文件

我正在从事一个依赖SWT的项目。 它使用Maven作为构建工具和依赖项管理系统。 因为SWT是平台相关的,所以我需要告诉Maven应该使用哪个平台上的依赖。 Maven配置文件通常用于根据os.family和os.arch属性有条件地包括依赖项 , 如下所示: 问题是os.ar ...

8 在Maven构建中获取配置文件列表

在Maven构建中,我要添加一个配置文件列表。 我想将此清单写在清单中。 是否可以使用属性以将其放入清单条目中? 还是可能有一个我可以用来具有属性的插件? 我看过互联网,但没有找到答案。 谢谢, J.Doe ...

9 Maven配置文件问题

我正在尝试制作两个Maven个人资料,但我认为我做错了什么。 在Maven网站上阅读并做了建议,但仍然没有将值从Pom.xml传递到属性文件My Pom.xml: 我的属性文件: 我的java课: } 结果执行后,我得到: 但是我实际上想要获得我在Mave ...

10 可用的Maven配置文件

是否有一种简便的方法(最好是从命令行中)找出可用于特定项目的概要文件。 我有一个大型的,多模块的项目正在尝试解决。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM