我们有一个包含以下模块的多模块项目:
'Database'项目是一个jar项目,它使用'maven-assembly-plugin'创建一个额外的程序集。此附加程序集包含数据库架构。
插件配置如下:
<plugin>
<!-- create a zip file that contains all the db migration scripts. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-schema</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>db-schema-descriptor.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
“应用程序”项目创建应用程序目录结构的压缩版本。因此,它引用模式程序集,以便将其提取并复制到应用程序目录结构中的适当位置。引用表示为普通的maven依赖:
<dependency>
<groupId>my.application</groupId>
<artifactId>persistence</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>db-schema</classifier>
</dependency>
至少有一个多模块项目聚合4个子模块,以便一步构建应用程序。
在聚合项目上运行'mvn deploy'可以正常工作。提取并复制数据库模式程序集。但是当在聚合项目上运行'mvn release:prepare'时,'Application'项目失败并显示错误通知,maven无法找到版本为'0.0.1'的架构程序集。日志文件指出'Persistence'项目已在'Application'项目之前构建,并且已构建'database schema'程序集。
任何人都知道我做错了什么?
答案 0 :(得分:0)
答案 1 :(得分:0)
使用命令行'mvn -DpreparationGoals = install release:prepare'解决问题。使用该命令行,prepare release:prepare targets首先运行安装目标,在本地存储库中安装发布程序集。稍后可以在发布过程中引用这些程序集。