mvn을 설치하고 동일한 명령 행 호출에서 POM에 정의 된 등록 정보를 대체 할 때 POM의 정의 된 등록 정보 값을 업데이트하지 않는다는 것을 발견했습니다. 패키지 아티팩트가 POM 파일과 동기화되지 않게하는 로컬 저장소에 설치됩니다. 예를 들어,명령 줄 (Maven 2.2.1)에서 Maven 등록 정보 덮어 쓰기
모듈 온 POM
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0.0</modelVersion>
<groupId>org.myorg.test</groupId>
<artifactId>module-one</artifactId>
<version>1.0</version>
그리고 모듈 두 POM
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0.0</modelVersion>
<groupId>org.myorg.test</groupId>
<artifactId>module-two</artifactId>
<version>1.0</version>
<properties>
<module.one.version>1.0</module.one.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.myorg.test</groupId>
<artifactId>module-one</artifactId>
<version>${module.one.version}</version>
</dependency>
</dependencies>
다음 리딩 두 개의 모듈, 모듈 온 및 모듈 두 고려
module-one에 mvn install을 실행합니다. POM이 module-one을 설치합니다 : 1.0을 로컬에 설치합니다. 리포지토리. 이제 모듈 1 POM을 편집하고 버전을 2.0으로 설정하고 mvn install을 실행하면 module-one : 2.0을 로컬 저장소에 설치합니다.
module-two pom에서 mvn install -Dmodule.one.version = 2.0을 실행하면 module-two : 1.0이 로컬 저장소에 설치됩니다. 그러나, 매니페스트 파일을 내장 JAR을 검사하고 개방 여전히 모듈 하나에 대한 종속성을 참조합니다 다음
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Build-Jdk: 1.6.0_26
Class-Path: module-one-2.0.jar
그러나 로컬 저장소에서이 내장 항아리가는 POM을 보여줍니다 : 재산 1.0 것 원래 정의대로 그대로 유지
<properties>
<module.one.version>1.0</module.one.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.myorg.test</groupId>
<artifactId>module-one</artifactId>
<version>${module.one.version}</version>
</dependency>
</dependencies>
이 올바른 동작입니까? 아니면 다른 방식으로 module.one.version 속성을 파싱해야합니까?
감사합니다.