java - Yaml 文件上的 Maven ArcheType 过滤器

标签 java maven yaml velocity maven-archetype

构建我的 Archetype 时,我在解析 yaml 文件时收到错误

我已经以这种方式在yaml的archetype-metadata.xml上设置了fileSet

<fileSet filtered="true" encoding="UTF-8">
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.yml</include>
            </includes>
        </fileSet>

这是我的 yaml 文件

spring:
 application:
  name: ${applicationName}-service
logging:
 pattern:
  console: ""
management:
  security:
    enabled: false
server:  
  port: ${PORT:4001}

这是我的 ArcheType 的清理并安装错误

 org.apache.velocity.exception.ParseErrorException: Encountered ":4001}" at archetype-resources/src/main/resources/bootstrap.yml[line 11, column 15]
Was expecting one of:
    "[" ...
    "}" ...

at org.apache.velocity.Template.process(Template.java:151)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:437)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:343)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processTemplate(DefaultFilesetArchetypeGenerator.java:770)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFileSet(DefaultFilesetArchetypeGenerator.java:571)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processTemplates(DefaultFilesetArchetypeGenerator.java:820)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processArchetypeTemplates(DefaultFilesetArchetypeGenerator.java:545)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFilesetProject(DefaultFilesetArchetypeGenerator.java:663)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFilesetModule(DefaultFilesetArchetypeGenerator.java:596)
at org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.generateArchetype(DefaultFilesetArchetypeGenerator.java:207)
at org.apache.maven.archetype.generator.DefaultArchetypeGenerator.processFileSetArchetype(DefaultArchetypeGenerator.java:135)
at org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:106)
at org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:149)
at org.apache.maven.archetype.mojos.IntegrationTestMojo.generate(IntegrationTestMojo.java:535)
at org.apache.maven.archetype.mojos.IntegrationTestMojo.processIntegrationTest(IntegrationTestMojo.java:494)
at org.apache.maven.archetype.mojos.IntegrationTestMojo.execute(IntegrationTestMojo.java:313)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

我正在使用

  • Eclipse 氧气
  • jdk 1.8
  • Maven 3.3.1

最佳答案

Velocity 将尝试在 $ (美元符号)之后获取变量,因此我建议您欺骗 Velocity 来忽略它,然后您的 Spring 将获得所需的输出 ${PORT:4001} 速度完成后转换模板。

#set ( $dollarSign = "$")
port: $dollarSign{PORT:4001}

应该是 ${dollarSign}{PORT:4001}

关于java - Yaml 文件上的 Maven ArcheType 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46878359/

相关文章:

java - 从 String ArrayList 返回某些值

amazon-web-services - 等于 aws cloudFormation YAML 中的条件给出错误

java - EventListener 使 Spring 创建所有作用域 bean

java - Eclipse 在 Android 项目构建中卡住

java - 如何编译maven文件?

java - 与 Maven 集成的 Eclipse 动态 Web 项目

java - Jmockit 不会合并使用coverage-output=serial 生成的两个coverage.ser 文件

.net - YAML 中的单个感叹号有什么作用?

ruby-on-rails - YAML 文件中的哈希值?

java - 获取有关 Java 进程终止的通知