gpt4 book ai didi

java - 将属性添加到 Maven 原型(prototype)

转载 作者:行者123 更新时间:2023-12-02 02:23:33 25 4
gpt4 key购买 nike

我有一个 Maven 原型(prototype)项目,想要进行一些进一步的配置。我尝试过:

  1. ${servicelocatorhost}$${servicelocatorport} 放入我的 .tomcatplugin 文件中。
  2. .tomcatplugin 添加到原型(prototype)元数据文件中的过滤文件中。
  3. 添加

    <requiredProperties>
    <requiredProperty key="servicelocatorhost">
    <defaultValue>localhost</defaultValue>
    </requiredProperty>
    <requiredProperty key="servicelocatorport">
    <defaultValue>2809</defaultValue>
    </requiredProperty>
    </requiredProperties>

到原型(prototype)元数据文件。当我构建这个时,我得到

Archetype IT 'basic' failed: Missing required properties in archetype.properties: servicelocatorhost, servicelocatorport

到目前为止,我认为 archetype.properties 文件仅用于 create-from-project 而不是构建原型(prototype)。我应该将此类文件中的属性和默认值信息加倍吗?

我到底需要什么才能完成这项工作?

最佳答案

创建原型(prototype)时,还会为其创建集成测试。 archetype.properties 文件中的值在运行集成测试时使用(使用 maven-invoker-plugin)。

举个例子:我有一个过滤 POM 的简单原型(prototype)。除了 GAV 坐标之外,我还希望原型(prototype)用户提供其 Subversion 存储库的名称和应用程序根目录,以便我可以填充 <scm>正确阻止。所以我创建了变量 ${scmRepo} , ${applicationRootDir} ,和${artifactId}在 archetype-metadata.xml 文件中:

<requiredProperties>
<requiredProperty key="svnRepo" />
<requiredProperty key="applicationRootDir" />
<requiredProperty key="artifactId">
....
</requiredProperties>

然后在 POM 中使用它们 ( src/main/resouces/archetype-resources/pom.xml ):

<scm>
<connection>scm:svn:https://host.company.com/svn/${svnRepo}/trunk/${applicationRootDir}/${artifactId}</connection>
</scm>

最后一步是在 archetype.properties 文件中提供默认值。仅当您作为开发人员构建原型(prototype)时才使用它,而不是当您的社区使用原型(prototype)来创建项目时使用。它可以让您确保原型(prototype)符合您的要求。因此,在我的示例中,archetype.properties 文件包含

svnRepo=maven
applicationRootDir=basic
artifactId=test

在同一目录中,我有一个 verify.groovy 文件,其中包含用于验证原型(prototype)是否正常工作的代码:

def xmlFile = new File(basedir, "pomFileDir/pom.xml")
assert xmlFile.exists()

def project = new XmlSlurper().parse(xmlFile)
....
assert "scm:svn:https://host.company.com/svn/maven/trunk/basic/test" == project.scm.connection.text()

我从 this blog post 学到了这一点,这个archetype documentation ,以及我自己使用 Maven 调用程序插件的知识。

关于java - 将属性添加到 Maven 原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com