ODL(OpenDayLight) 기본 튜토리얼 #2 – Impl 추가(Lithium Version)

기본 프로젝트 생성 뒤 추가 plugin(Impl module)을 추가할때 프로젝트를 새로 생성하여 만들어진 Impl 폴더를 복사해야하는 번거러움이 있다.

그리고 복사한뒤에 artifacetId , 폴더명 등을 바꾸려면 pom 파일 및 features 등록 과정이 필요한데 새로운 plugin을 추가하는 방법을 정리 해놓았다.

1. 새로운 프로젝트 생성

  • 튜토리얼1 내용 참고하여 새로운 ODL프로젝트를 생성한뒤 impl 폴더를 기존 프로젝트의 루트 경로에 복사하도록 한다. 새로운 프로젝트를 생성할때 groupId 값은 기존 생성된 프로젝트와 동일하게 만들어준다. artifactId 값은 임의로 정해주고 추구에 변경 하도록한다.

2. Impl 폴더 복사

  • 새로 생성한 프로젝트에서 Impl 폴더만 복사하여 기존 프로젝트로 옮긴다. 폴더명 수정 -> 폴더명을 수정했으면 root pom.xml 파일에 아래와 같이 기존에 항목에 추가된 impl를 추가해준다.
1
2
3
4
5
6
7
<module>api</module> 
<module>[$추가된 Impl의 폴더명]</module>
<module>Impl</module>
<module>karaf</module>
<module>features</module>
<module>artifacts</module>
<module>it</module>

artifactId 수정 새로 생성한 Impl의 pom.xml 에서 artifactId 명을 수정해준다.

1
2
3
4
<groupId>org.opendaylight.hello</groupId>
<artifactId>notification-impl</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>bundle</packaging>

그리고 dependency 에서 api 모듈의 정보를 가져오지 못해 문제가 발생하는데 기존 프로젝트의 api 모듈을 참조 하도록 수정해준다.

1
2
3
4
5
<dependency> 
<groupId>${project.groupId}</groupId>
<artifactId>hello-api</artifactId>
<version>${project.version}</version>
</dependency>

3. feature 등록

feature 에 등록할때 수정이 필요한 파일은 총 2가지 이다.

  • features의 pom.xml , features.xml

    1. features의 pom.xml

      • dependency로 추가해줘야 하는게 2개 한쌍이다.
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      <dependency> 
      <groupId>${project.groupId}</groupId>
      <artifactId>Welcome</artifactId>
      <version>${project.version}</version>
      </dependency>
      <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>Welcome</artifactId>
      <version>${project.version}</version>
      <type>xml</type>
      <classifier>config</classifier>
      </dependency>
  1. features.xml

    * features/src/main/features/features.xml
    
     
    1
    2
    3
    4
    5
    <feature name='odl-Welcome' version='${project.version}' description='OpenDaylight :: Welcome'>
    <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
    <feature version='${project.version}'>odl-mobigen-api</feature>
    <bundle>mvn:org.opendaylight.mobigen/Welcome/{{VERSION}}<;/bundle>
    <configfile finalname="${configfile.directory}/Welcome.xml">mvn:org.opendaylight.mobigen/Welcome/{{VERSION}}/xml/config</configfile></feature>

rest-api사용을 하기위해 REST에도 등록은 해준다. 마찬가지로 features.xml 파일에서 작업한다.

1
2
3
4
5
<feature name='odl-mobigen-rest' version='${project.version}' description='OpenDaylight :: mobigen :: REST'>
<feature version="${project.version}">odl-Welcome</feature>
<feature version="${project.version}">odl-Impl</feature>
<feature version="${restconf.version}">odl-restconf</feature>
</feature>
공유하기