読者です 読者をやめる 読者になる 読者になる

taketoncheir.log

Like the Decatoncheir by Poseidon Industrial, This blog is Yet Another Storage for My Long Term Memories.

Update Siteを社内サーバーに構築してみた話

EclipsePlugin Maven

Eclipseのプラグインって、Install New SoftwareでUpdate Siteを指定すると楽にインストールできますよね。
そのSiteを社内サーバーに立ててみました。

肝は、

  • mavenコマンドは、"mvn clean deploy site-deploy"で
  • repositoryを設定し、社内サーバーを認識させる
  • distributionManagementを追加し、siteとしてUpdate SiteのURLを登録
  • repositoryプロジェクトを"repository"としてdeployするのではなく、"site"として"site-deploy"する
  • ファイルアップロードのためのextensionとして、wagon-webdav-jackrabbitを使用

といったところ。
m2eclipseやmaven-tychoのサンプルプロジェクトを参考にしようとしたけど、どうもしっくりこなかったので自己流になってしまいましたが、、
以下詳細。

親pom.xmlの設定

まずはリポジトリのURLをプロパティに以下を追加。

<properties>
    <xxx.repos>リポジトリのURL</xxx.repos>
</properties>



webdavのプラグインを設定。jackrabbitを使っているのは、ここを参考にしたから。

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-webdav-jackrabbit</artifactId>
    </extension>
  </extensions>
</build>



リポジトリを登録。プラットフォームの情報も書いておく。

<repositories>
  <!-- configure p2 repository to resolve against -->
  <repository>
    <id>indigo</id>
    <layout>p2</layout>
    <url>http://download.eclipse.org/releases/indigo/</url>
  </repository>
  <repository>
    <id>xxx.repository</id>
    <name>repository of xxx</name>
    <url>${xxx.repos}</url>
  </repository>
</repositories>



アップロードの情報として、deployゴールで使用するrepository情報と、site-deployゴールで使用するsite情報を書いておく。
repositoryを書いているのは、各バンドルを同一サーバーのrepositoryにアップロードするため。

<distributionManagement>
  <repository>
    <id>xxx.repository</id>
    <name>repository of xxx</name>
    <url>dav:${xxx.repos}</url>
  </repository>
  <site>
    <id>xxx.repository</id>
    <name>update-site of xxx</name>
    <url>dav:${xxx.repos}/sites/xxx1.0.0/</url>
  </site>
</distributionManagement>

repositoryプロジェクトの設定

上の親pomの設定で基本は完了しているはず。
repositoryプロジェクト側のpom.xmlに情報を書いてもいい。

ここには一応その他の設定を書いておく。

<?xml version="1.0" encoding="UTF-8"?>
<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">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>jp.co.worksap</groupId>
    <artifactId>xxx-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <groupId>jp.co.worksap</groupId>
  <artifactId>xxx-repository</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>eclipse-feature</packaging>
  
  <build>    
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <configuration>
          <deployableFeature>true</deployableFeature>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-p2-plugin</artifactId>
        <executions>
          <execution>
            <id>categorization</id>
            <phase>package</phase>
            <goals>
              <goal>category-p2-metadata</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <metadataRepositoryName>xxx - myPlugin</metadataRepositoryName>
          <artifactRepositoryName>xxx - myPlugin</artifactRepositoryName>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <distributionManagement>
    <site>
      <id>xxx.repository</id>
      <name>repository of xxx</name>
      <url>dav:${xxx.repos}/sites/xxx1.0.0/</url>
    </site>
  </distributionManagement>
  
</project>

mvn clean deploy site-deployでアップロード

EclipseのInstall New Softwareにて、サイト追加時に${xxx.repos}/sites/xxx1.0.0/を指定

すると、content.jarの情報を参照し、featureをDownload対象として認識してくれる。

ここまで結構苦労したけど、できてよかった ε-(´∀`*)ホッ