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

maven ear插件项目属性查找失败

郭易安
2023-03-14

我创建了带有过滤器的简单ear项目。我想对每个环境使用不同的设置,这些设置应该传递给生成的应用程序。xml文件,格式为env条目。使用maven ear插件生成ear包,如下所示:

        <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <generateApplicationXml>true</generateApplicationXml>
                <version>6</version>
                <envEntries>
                    <env-entry>
                        <env-entry-name>customProperty</env-entry-name>
                        <env-entry-type>java.lang.String</env-entry-type>
                        <env-entry-value>${custom.property}</env-entry-value>
                    </env-entry>
                </envEntries>
                <applicationName>${custom.property}</applicationName>
            </configuration>
        </plugin>

为此,我必须使用另一个插件属性-maven-plugin。它成功地从文件中读取属性并将它们设置为maven项目属性,因此我可以使用${}将它们插入pom.xml文件中。它适用于大多数pom.xml元素(即

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
    <application-name>default property</application-name>
    <display-name>test</display-name>
    <env-entry>
        <env-entry-name>customProperty</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>${custom.property}</env-entry-value>
    </env-entry>
</application>

这可能是一个应该在Maven Ear Plugin发布的错误,但我在那里没有帐户。我还附加了存档的maven项目,如果有人想自己检查的话:test.zip.

我使用maven资源插件和过滤器应用程序成功地解决了这个问题。xml文件创建为user@skegg99后。由于我无法替换这个文件,我不得不将它复制到META-INF目录。我知道我看起来不漂亮,但现在情况已经解决了。以下是maven资源插件的附加标记:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <outputDirectory>${basedir}/target/${project.artifactId}-${project.version}/META-INF</outputDirectory>
                <filters>
                    <filter>src/main/filters/${env}.properties</filter>
                </filters>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

还有这里:

    <resources>
        <resource>
            <directory>${basedir}/target</directory>
            <filtering>true</filtering>
            <includes>
                <include>application.xml</include>
            </includes>
        </resource>
    </resources>

整个项目配置可以从这里下载。

共有1个答案

笪成周
2023-03-14

使用当前的设置,这很可能是不可能的。

我只是简单地看了一下代码,其中指出env条目是通过PlexusConfiguration加载的。

如果不深入研究该代码,我看不出这部分处理的条目比“读取XML,放入列表”更特殊。

 类似资料:
  • 问题内容: 在redis中,我将对象存储在一个排序集中。在我的解决方案中,能够按日期运行范围内的查询很重要,因此我存储的项目的得分为每个项目的时间戳,例如: 但是,在其他情况下,我需要根据其ID在集合中找到一个项目。我知道我不能像对待nosql db那样仅查询此数据结构,但是我尝试使用,这是行不通的。 它返回;“空列表或集” 也许我需要序列化不同吗?我已经使用Json.Net进行了序列化。 我如何

  • 我正在从ModelMapper到MapStruct的转换过程中,到目前为止一切都很顺利,除了在列表上排序和筛选的情况,如果我有一个从域对象到实体的映射,例如: 从一个api中,我想在contactAddressLine1上进行过滤或排序,然后我想查找源代码(或反向映射时的目标代码),以便将其添加到动态jpq或sql查询中。 有没有办法用MapSTRt做到这一点? 使用ModelMapper,我可以

  • 在这种情况下,我必须读取某个属性文件,然后调用一个外部程序。 > 为了读取属性文件,我使用了属性Maven插件,在验证阶段使用 为了执行外部程序,我使用execmaven插件,调用goal 但是,如果我调用“mvn exec:exec”,则不会调用验证阶段,因此不会读取属性。 在我当前的场景中,我无法将exec:exec与任何特定的阶段联系起来(这是因为所有其他阶段都有非常具体的作业要处理,而我尝

  • 现在,在这个src文件夹中,我想在多个子文件夹上运行声纳配置文件,并排除一些第三方src文件夹。有人能帮我做这个吗?现在,sonar在上面的任何一个文件夹子文件夹中运行所有src的配置文件?

  • 我想部署一个库到我公司的远程存储库。 这是我第一次想将库项目部署到远程存储库。 我收到以下错误消息: org.sonatype.aether.transfer.artifactNotFoundException:找不到工件com.http: httpkit: jar: 0.0.1internal.repo(http://jenkins.internal.com/) 也许我理解了一些完全错误的地方,

  • Project 对象提供了一些标准的属性,您可以在构建脚本中很方便的使用他们. 下面列出了常用的属性: Name Type Default Value project Project Project 实例对象 name String 项目目录的名称 path String 项目的绝对路径 description String 项目描述 projectDir File 包含构建脚本的目录 build