1

我们有一个包含以下模块的多模块项目:

  • 数据库
  • 持久性
  • 商业
  • 应用

“数据库”项目是一个 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”时,会出现错误通知,即 maven 无法找到版本为“0.0.1”的模式程序集。日志文件指出“持久性”项目已在“应用程序”项目之前构建,并且“数据库模式”程序集已构建。

有人知道我做错了什么吗?

4

2 回答 2

0

有关答案,请参见http://www.mail-archive.com/users@maven.apache.org/msg117321.html

于 2011-03-22T10:08:59.460 回答
0

使用命令行 'mvn -DpreparationGoals=install release:prepare' 解决了这个问题。使用该命令行, prepare release:prepare 目标首先运行 install 目标,它将发布程序集安装在本地存储库中。稍后可以在发布过程中引用这些程序集。

于 2011-04-06T06:22:21.080 回答