Maven: 如何在父POM中引用子项目的构建目录?

8 浏览
0 Comments

Maven: 如何在父POM中引用子项目的构建目录?

我有一个多模块的Maven项目,其中某些模块必须构建为Docker镜像。我试图将所有的配置放在父POM中,像这样:\n父POM:\n


  
    
      
        com.spotify
        docker-maven-plugin
        0.3.5
        
          java
          ${project.artifactId}
          ["java", "-jar", "/${project.build.finalName}.jar"]
          
            
              /
              ${project.build.directory}/${project.build.finalName}-executable
              ${project.build.finalName}.jar
              lib/*.jar
            
          
        
      
    
  

\n子POM:\n


  
    
      com.spotify
      docker-maven-plugin
    
  

\n但是当我在子项目上运行mvn docker:build时,我会得到一个错误,因为project.build.directory属性被解析为父POM的目标目录,而不是子目录的目标目录。\n有没有可能延迟父POM中属性的扩展?或者从父POM中引用子POM的project.*属性?

0
0 Comments

问题出现的原因是我在使用版本属性时也使用了属性(像这样:Maven version with a property)。这只有在从聚合POM运行Maven时才有效(有点)。切换到显式版本(并使用maven-release-plugin更新它们)解决了这个问题。

0