maven - Micronaut exec-maven-plugin 无法将值存储到数组中:ArrayStoreException
问题描述
我在这个generate-sources
阶段使用 maven 插件来修改一些源文件。我总是得到例外:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:java (openapischema-model-description) on project profile-generation: Unable to parse configuration of mojo org.co
dehaus.mojo:exec-maven-plugin:3.0.0:java for parameter arguments: Cannot store value into array: ArrayStoreException -> [Help 1]
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>openapischema-model-description</id>
<goals>
<goal>java</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<mainClass>de.ohmesoftware.javadoctoopenapischema.Enricher</mainClass>
<includePluginDependencies>true</includePluginDependencies>
<arguments>
<argument>-sourcePath</argument>
<argument>src/main/java/com/gigsky/profile_generation/domain</argument>
</arguments>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>de.ohmesoftware</groupId>
<artifactId>javadoctoopenapischema</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</plugin>
解决方案
该问题是由于在 Micronaut 的父 pom 中使用此插件以及 Maven 将插件的配置部分合并在一起的行为造成的。解决方案是传递combine.self="override"
给该arguments
部分。
<configuration>
<mainClass> de.ohmesoftware.javadoctoopenapischema.Enricher</mainClass>
<includePluginDependencies>true</includePluginDependencies>
<arguments combine.self="override">
<argument>-sourcePath</argument>
<argument>src/main/java/com/gigsky/profile_generation/domain</argument>
</arguments>
</configuration>
解释:
Micronaut 在其定义micronaut-parent-2.0.0.pom
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>-XX:TieredStopAtLevel=1</argument>
<argument>-Dcom.sun.management.jmxremote</argument>
<argument>${exec.mainClass}</argument>
</arguments>
</configuration>
</plugin>
这<classpath/>
是造成问题的地方。Maven 将参数部分合并在一起,尽管这些是不同的目标。这可以通过以下方式检查mvn help:effective-pom
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>openapischema-model-description</id>
<phase>generate-sources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>de.ohmesoftware.javadoctoopenapischema.Enricher</mainClass>
<includePluginDependencies>true</includePluginDependencies>
<arguments>
<argument>-sourcePath</argument>
<argument>src/main/java/com/gigsky/profile_generation/domain</argument>
<classpath />
</arguments>
<executable>java</executable>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>de.ohmesoftware</groupId>
<artifactId>javadoctoopenapischema</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath />
<argument>-XX:TieredStopAtLevel=1</argument>
<argument>-Dcom.sun.management.jmxremote</argument>
<argument>com.gigsky.profile_generation.Application</argument>
</arguments>
</configuration>
</plugin>
推荐阅读
- java - 春季/休眠日期提前一天
- android - 如何在 Android 中使用“getCurrencyInstance”获取印尼盾货币格式器?阿尔巴尼亚列克等其他地区呢?
- json - PostGreSql 中的 JSON 列操作
- powerbuilder - Powerbuilder MLE Control 中的自动换行
- awk - 从列中减去一个数字,同时保留其余部分
- python - 如何使用 Django 设置可选参数?
- swift - 你如何在 ForEach Swiftui 的结构列表中使用枚举?
- css - 如何将颜色渐变修复到固定顶部导航栏?
- javascript - 使用 GenerateTokenRequestV2 在 Embedded Power BI 中创建报表
- c# - 为什么在 OnPaint 事件中花费的时间似乎取决于刷新率?