Maven版本期间对其他程序集的模块间依赖性

时间:2011-03-17 14:33:13

标签: maven-2 maven-assembly-plugin maven-release-plugin

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

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

'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'程序集。

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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