maven - 使用 exec-maven-plugin 到 maven 阶段

标签 maven exec-maven-plugin

我正在使用 exec-maven-plugin 来执行一个 java 应用程序来在我的项目中生成一些代码:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.codegenerator.CodeGeneratorApplication</mainClass>
            </configuration>
        </plugin>

如果我在命令行“mvn exec:java”中执行,这工作正常,但现在我想将此代码生成附加到 maven 阶段“generate-resources”,所以我已将 pom 更改为:
       <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>codegeneration</id>
                    <phase>generate-resources</phase>
                    <goals><goal>java</goal></goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.codegenerator.CodeGeneratorApplication</mainClass>
            </configuration>
        </plugin>

但是突然当我执行“mvn exec:java”时,我得到了如下错误:
[09:52:03.926] [] [] [com.codegenerator.CodeGeneratorApplication.main()] [WARN ] [AbstractApplicationContext.java:550] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'codeGeneratorApplication': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'cnp.application.acronym' in value "${cnp.application.acronym}"
[09:52:03.940] [] [] [com.codegenerator.CodeGeneratorApplication.main()] [INFO ] [DirectJDKLog.java:179] - Stopping service Tomcat
[09:52:03.982] [] [] [com.codegenerator.CodeGeneratorApplication.main()] [INFO ] [AutoConfigurationReportLoggingInitializer.java:101] - 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
[09:52:03.987] [] [] [com.codegenerator.CodeGeneratorApplication.main()] [ERROR] [SpringApplication.java:815] - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'codeGeneratorApplication': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'cnp.application.acronym' in value "${cnp.application.acronym}"
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
    at com.codegenerator.CodeGeneratorApplication.main(CodeGeneratorApplication.java:26) 

有人可以帮助我有什么问题吗?谢谢!

最佳答案

您的“配置”元素需要位于“执行”元素内。

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>codegeneration</id>
                <phase>generate-resources</phase>
                <goals><goal>java</goal></goals>
                <configuration>
                   <mainClass>com.codegenerator.CodeGeneratorApplication</mainClass>
                </configuration>
            </execution>
        </executions>

</plugin>

关于maven - 使用 exec-maven-plugin 到 maven 阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519529/

相关文章:

Maven 私有(private)远程仓库设置

java - 在 Eclipse 中运行 Maven/Wicket 项目时的目标是什么?

java - Maven 项目设置

maven - 使用带有参数的 Maven 'exec:exec'

java - 应用程序版本未显示在 Spring Boot banner.txt 中

maven - 为什么交叉构建约定将 scala 版本附加到 artifactId?

java - Maven 和 Java : The parameters 'mainClass' for goal org. codehaus.mojo :exec-maven-plugin:1. 2.1:java 丢失或无效

maven - 使用exec-maven-plugin时如何防止测试运行

Maven exec 插件 - 执行 python 脚本

java - 如何执行 exec-maven-plugin 未调用的 'Premain' 方法