Java 将属性添加到maven原型

Java 将属性添加到maven原型,java,maven,maven-archetype,Java,Maven,Maven Archetype,我有一个Maven原型项目,并希望进一步配置一些东西。我试过: 将${servicelocatorhost}$和${servicelocatorport}放入我的.tomcatplugin文件中 将.tomcatplugin添加到原型元数据文件中的筛选文件中 添加 <requiredProperties> <requiredProperty key="servicelocatorhost"> <defaultValue>localhost</

我有一个Maven原型项目,并希望进一步配置一些东西。我试过:

  • ${servicelocatorhost}$
    ${servicelocatorport}
    放入我的
    .tomcatplugin
    文件中
  • .tomcatplugin
    添加到原型元数据文件中的筛选文件中
  • 添加

    <requiredProperties>
      <requiredProperty key="servicelocatorhost">
        <defaultValue>localhost</defaultValue>
      </requiredProperty>
      <requiredProperty key="servicelocatorport">
        <defaultValue>2809</defaultValue>
      </requiredProperty>
    </requiredProperties>
    
    直到现在,我还以为
    archetype.properties
    文件只用于
    createfromproject
    而不是构建原型。我应该在这样的文件中加倍属性和默认值的信息吗


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

    在创建原型时,还为其创建了一个集成测试。运行集成测试时(使用maven invoker插件),将使用archetype.properties文件中的值

    例如:我有一个过滤POM的简单原型。除了GAV坐标之外,我还希望原型用户提供他们的Subversion存储库的名称和应用程序根目录,以便正确填充
    块。因此,我在archetype-metadata.xml文件中创建了变量
    ${scmRepo}
    ${applicationRootDir}
    ,和
    ${artifactId}

    <requiredProperties>
        <requiredProperty key="svnRepo" />
        <requiredProperty key="applicationRootDir" />
        <requiredProperty key="artifactId">
        ....
    </requiredProperties>
    
    最后一步是在archetype.properties文件中提供默认值。这仅在作为开发人员构建原型时使用,而不是在社区使用原型创建项目时使用。它允许您确保原型符合您的要求。因此,在我的示例中,archetype.properties文件包含

    svnRepo=maven
    applicationRootDir=basic
    artifactId=test
    
    在同一目录中,我有一个verify.groovy文件,其中包含验证原型是否正确工作的代码:

    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()
    

    我从Maven invoker插件中学到了这一点,以及我自己使用Maven invoker插件的知识。

    在创建原型时,还为其创建了一个集成测试。运行集成测试时(使用maven invoker插件),将使用archetype.properties文件中的值

    例如:我有一个过滤POM的简单原型。除了GAV坐标之外,我还希望原型用户提供他们的Subversion存储库的名称和应用程序根目录,以便正确填充
    块。因此,我在archetype-metadata.xml文件中创建了变量
    ${scmRepo}
    ${applicationRootDir}
    ,和
    ${artifactId}

    <requiredProperties>
        <requiredProperty key="svnRepo" />
        <requiredProperty key="applicationRootDir" />
        <requiredProperty key="artifactId">
        ....
    </requiredProperties>
    
    最后一步是在archetype.properties文件中提供默认值。这仅在作为开发人员构建原型时使用,而不是在社区使用原型创建项目时使用。它允许您确保原型符合您的要求。因此,在我的示例中,archetype.properties文件包含

    svnRepo=maven
    applicationRootDir=basic
    artifactId=test
    
    在同一目录中,我有一个verify.groovy文件,其中包含验证原型是否正确工作的代码:

    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()
    
    我从Maven invoker插件中学到了这一点,以及我自己使用Maven invoker插件的知识