PROJECT-A는 전쟁입니다. 그것은 PROJECT-B의 단위 테스트에서 사용하고자하는 몇 가지 코드가 있습니다.다른 프로젝트의 테스트를위한 Maven building jar.
이렇게하려면 클래스가있는 jar를 출력하려면 PROJECT-A가 필요하다고 생각합니다.
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parent>
<groupId>au.com.name.redacted</groupId>
<artifactId>PARENT-PROJECT</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>PROJECT-A</artifactId>
<packaging>war</packaging>
... snip
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>PROJECT-A-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
내가
D:\Workspace\name\PROJECT-A\target\PROJECT-A-1.0.jar
D:\Workspace\name\PROJECT-A\target\PROJECT-A-1.0.war
를 볼 수 있습니까
이cd PROJECT-A
mvn clean install
이
[INFO] --- maven-jar-plugin:2.4:jar (PROJECT-A-jar) @ PROJECT-A ---
[INFO] Building jar: D:\Workspace\name\PROJECT-A\target\PROJECT-A-1.0.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ PROJECT-A ---
[INFO] Installing D:\Workspace\name\PROJECT-A\target\PROJECT-A-1.0.jar to C:\Users\myusername\.m2\repository\au\com\name\PARENT-PROJECT\PROJECT-A\1.0\PROJECT-A-1.0.war
를 출력 실행하면하지만 난이 표시되지 않는 다음은 POM의 발췌입니다 내 레포에 항아리 - 오직 전쟁.
C:\Users\myusername\.m2\repository\au\com\name\PARENT-PROJECT\PROJECT-A\1.0\PROJECT-A-1.0.war
그럼 PROJECT-B에 나는 그것이 종속성으로 PROJECT-A를 얻을 수있는 시도하고 ..
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parent>
<groupId>au.com.name.redacted</groupId>
<artifactId>PARENT-PROJECT</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>PROJECT-B</artifactId>
<packaging>war</packaging>
... snip
<dependency>
<groupId>au.com.name.redacted</groupId>
<artifactId>PROJECT-A</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
그리고 내가 사용했습니다
[ERROR] Failed to execute goal on project PROJECT-B: Could not resolve dependencies for project au.com.name.redacted:PROJECT-B:war:1.0: Failure to find au.com.name.redacted:PROJECT-A:jar:1.0 in http://repo.server.com.au:8081/artifactory/repo was cached in the local repository, resolution will not be reattempted until the update interval of repo has elapsed or updates are forced -> [Help 1]
는 소리를 모두 당신을 전쟁과 시험 프로젝트는 그것에 달려있다. –
문제는 그와 관련이 있으며, 일반적으로 잘못된 패키징이 여러 개 있습니다. 당신은'maven-assembly-plugin'을 사용하여이 문제를 해결할 수 있습니다. 그러나 가장 좋은 해결은 @NickWilson이 말했듯이, 프로젝트를 분리하고 jar로 패키징하기위한 공통 코드를 추출하는 것입니다. – user902383
빌드에 추가 아티팩트를 첨부하려면 " Build Helper Maven Plugin "-> http://mojo.codehaus.org/build-helper-maven-plugin/ @NickWilson이 말했듯이 프로젝트가 제대로 배치되어 있다면 거의 필요하지 않습니다. –