taketoncheir.log

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

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

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対象として認識してくれる。

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