2009-06-12 4 views
8

Maven을 처음 사용하고 회사 빌드를 만드는 중입니다. Maven Central Repository에 연결하기를 원하지 않으며, 우리는 src와 test 코드에 대해 super pom에 지정된 것과 다른 디렉토리 구조를 가지고있다. 나는 이것을 처리 할 수있는 가장 좋은 방법은 고객 슈퍼 포옴을 만드는 것이라고 생각했지만, 나는 정말로 프로젝트 포옴이 그것을 참조 할 수 있도록 슈퍼 포옴을 실제로 두는가? 어딘가 저장소에 들어가나요? 그렇다면 어디에서?Maven Super POM

덕분에, 제프

답변

16

나의 제안은 당신이 당신의 프로젝트 설정을 도출 할 수있는 부모 POM을 만들 수 있다는 것입니다. 이 부모 POM은 단순히 또 다른 Maven 2 프로젝트이지만 "jar"대신 "pom"유형을 사용합니다. 상위 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"> 
    <parent> 
     <artifactId>projectname</artifactId> 
     <groupId>com.company.projectname</groupId> 
     <version>1.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion>   
    <artifactId>child-project</artifactId> 
    <packaging>jar</packaging> 
    <name>child-project</name> 
    <description> 
     My child project 
    </description> 
</project> 

모든 것이 지금이 같을 수

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.projectname</groupId> 
    <artifactId>projectname</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 
    <name>projectname</name> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.5</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <properties> 
     <superprop1>this property is available in all child projects</superprop1> 
     <superprop2>this property is available in all child projects</superprop2> 
     <superprop3>this property is available in all child projects</superprop3> 
    </properties> 
</project> 

그리고 프로젝트의 자식 :

예를 들어,이 같은 부모 치어를 가질 수 어린이 폴에서 사용할 수 있습니다. about에 대한 예제에서 자식 프로젝트는 자동으로 JUnit 의존성을 사용할 수 있습니다. 이런 식으로하면 각 개발자가 Maven 설치의 슈퍼 POM을 망칠 필요가있을 때와 비교하여 환경이 자동으로 계산됩니다.

3

아마도 당신이 맞을 것입니다.이 상황에서는 수퍼 폼이 필요합니다. 어디에 넣는 지에 관해서는, 당신은 로컬 Maven 저장소를 생성하고 개발자에게 그것에게 접근 할 필요가있을 것이다. 여기에 몇 가지 유용한 (무료) 프로그램은 다음과 같습니다

번 당신은 실행중인 저장소를 얻습니다. 각 개발자가 설정 한 새로운 저장소 서버를 참조하도록 settings.xml을 수정해야합니다. 당신이 만든 슈퍼 폴더는 리포지토리에 배포 될 것이므로 일단 그것을 사용하도록 구성되면, 메이븐은 자동으로 슈퍼 폴더를 뽑아 낼 것입니다.

 
<?xml version="1.0" encoding="UTF-8"?> 
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <profiles> 
    <profile> 
     <repositories> 
     <repository> 
      <snapshots> 
      <enabled>false</enabled> 
      </snapshots> 
      <id>central</id> 
      <name>all</name> 
      <url>https://server.mycompany.com/artifactory/all</url> 
     </repository> 
     <repository> 
      <snapshots /> 
      <id>snapshots</id> 
      <name>all</name> 
      <url>https://server.mycompany.com/artifactory/all</url> 
     </repository> 
     </repositories> 
     <pluginRepositories> 
     <pluginRepository> 
      <snapshots> 
      <enabled>false</enabled> 
      </snapshots> 
      <id>central</id> 
      <name>all</name> 
      <url>https://server.mycompany.com/artifactory/all</url> 
     </pluginRepository> 
     <pluginRepository> 
      <snapshots /> 
      <id>snapshots</id> 
      <name>all</name> 
      <url>https://server.mycompany.com/artifactory/all</url> 
     </pluginRepository> 
     </pluginRepositories> 
     <id>artifactory</id> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <activeProfile>artifactory</activeProfile> 
    </activeProfiles> 
</settings> 
: 여기

는 artifactory 생성 Settings.XML의 파일의 예