site-deployのHTTP-Proxyバグの現状3

前回(d:id:sww:20071129:1196326043)の続き

どうやらMSITE-211に掲載されていたパッチをmaven-site-pluginのHEADに当てたようで、MSITE-211はcloseされました。

これでやっと手パッチを当てる必要がなくなった−!けどいろんなpomに最新SNAPSHOTを使うように修正入れるのは面倒だし 2.0 beta 7 が出るまで待つか・・・

      • -

他のブログでもこの話題があったのでリンク d:id:tanigon:20080423

http-proxy設定

しばらく Subversive 使っていて、必要があってFW外のリポジトリのソースを取りに行ってプロキシが問題に。

SVNKit だと Subversive の設定として http-proxy の項目があるんだけど、Native Java HL だと項目がない。どうしたものかと思ったら ~/.subversion/servers に項目を書けば良いという話があったので書いたわけですが動かない。

Windowsだから多分 C:\Document And Settings\${ユーザ名}\.subversion\servers だよなぁ?とか思っていたら、どうやら %APPDATA%\Subversion\servers だったようで。

http://subversion.tigris.org/faq.html#proxy

これで上手くいく・・・はず。

systemPathの問題

今日マルチプロジェクトの作成で問題が発生したためメモ。

まる、マルチプロジェクトは下記のようになっている

root
 - pom.xml
 - foo
    -pom.xml 
 - bar
    -pom.xml
 - lib
    -lib.jar

んで、fooはlib/lib.jarに依存、 barはfooに依存となってます。

ここで、foo/pom.xmlを下記のように書いてしまうと問題が。

<project>
・・・
  <dependencies>
・・・
    <dependency>
      <groupId>foo.org</groupId>
      <artifactId>foo</artifactId>
      <scope>system</scope>
      <version>0.0.1</version>
      <systemPath>${basedir}/../lib/lib.jar</systemPath>
・・・
  </dependencies>
・・・
</project>

上記のように書くと、fooのcompileは通るのですが、barの時に

[WARNING] POM for 'foo.org:foo:pom:0.0.1:compile' is invalid. It will be ignored for artifact resolution. Reason: Failed to validate POM for project foo.org:foo at Artifact [foo.org:foo:pom:0.0.1:compile]

ってな感じで怒られます。どうも bar/pom.xml を処理するときに、上手くsystemPathの解決ができないからっぽい。ちゃんとフルパスで書くと解決できるため、bar/pom.xmlの解析中にbar/pom.xmlの解析に行くときに${basedir}の展開ができていないのだろう。

色々なところで systemPath に ${basedir} を使っている例を見るけど、こんなはまり方もあるので注意。

まぁ結論としては他から参照される物のdependencyにscopeがsystemな物は突っ込んじゃ駄目というこで。

pde-maven-pluginをeclipse3.3で動かす(途中3)

(途中1)(途中2)の続き。

JDKのソース/ターゲットバージョンとソースエンコードの指定方法
まず、普通にGenericsとかAnnotationとか使ってるとPDEがはき出すbuild.xmlで怒られる。また、UTF-8でコード書いてても怒られる。

ソース・ターゲットバージョンについては

http://www.masatom.in/pukiwiki/Eclipse/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%B3%AB%C8%AF%A4%CETIPS%BD%B8/
http://wiki.eclipse.org/PDEBuild

を見ると、build.propertiesに "javacSource = 1.5" や "javacTarget = 1.5" を書けばよいみたい。

また、ソースエンコード

https://bugs.eclipse.org/bugs/show_bug.cgi?id=155015

をみると、build.propertiesに "javacDefaultEncoding" と書くとOKなようだ。といういことで build.properties を下記のように直接編集すると、生成されたbuild.xmlコンパイルができるようになった−!

javacSource = 1.5
javacTarget = 1.5
javacDefaultEncoding.. = UTF-8

なんとかここまで・・・これからまだ pde-maven-plugin で問題ないかどうかのちぇっくがあるけど。

pde-maven-pluginをeclipse3.3で動かす(途中2)

(途中1)の続き。

また、上記が終わってもさらに問題が。plugins.xmlの中の各属性値の最終文字が日本語の場合に問題があるようだ(例:"fooてすと")。
これは"fooてすと "と、半角空白を入れることで回避されますが、こんな回避法だと後々色々問題になるような・・・
そして、これが解決しても次は build.xml が存在しないと言って怒られる。チュートリアルにはそんなもん作る手順はないわけだが、どーせいと。antはマスターしてるから何をすればよいのか教えてくれれば書けるけどどんな内容を書けばよいのかが全く分からん・・・

という話だったんですがちょっと解決

build.xml
多分plugin.xmlを右クリック→PDE Tools→Create Ant Build File

■なんか文字コード処理がおかしい?
ありがたいことにPDEが作成するbuild.xmlのjavacタスクにはencoding指定がないため、システムの文字コードコンパイル使用とする(Windowsの場合はShift-JIS)。ということでPDEのExport Wizardを使うとはまる。

plugin.xmlからbuild.xmlをジェネレートして、上記を気をつけると上手くいくと思われる。

pde-maven-pluginをeclipse3.3で動かす(途中1)

てなわけでpde-maven-pluginを使おうとしていきなり躓いた。

どうやらリリースされているpde-maven-pluginはeclipse3.2をターゲットとしていて、eclipse/startup.jarがあることを期待しているようで、startup.jarが無いと怒られる。

eclipse 3.3 からは startup.jar が eclipse/plugins/rg.eclipse.equinox.launcher*-xyz.jar に変更されているため、このファイルを eclipse/startup.jar としてコピーしたらどうやら動くという情報が。
http://jira.codehaus.org/browse/MOJO-730

このstartup.jarが無いという問題は 1.0-alpha-2-SNAPSHOT で治ってるそうなんですが、次にスナップショットリポジトリからこのバージョンを拾ってくるところで問題が。

<plugins>
	<plugin>
		<groupId>org.codehaus.mojo</groupId>
		<artifactId>pde-maven-plugin</artifactId>
		<extensions>true</extensions>
		<version>1.0-alpha-2-SNAPSHOT</version>
		<configuration>
			<eclipseInstall>C:\Java\eclipse_3.3</eclipseInstall>
		</configuration>
	</plugin>
</plugins>
<pluginRepositories>
	<pluginRepository>
		<id>mojo-snapshot</id>
		<name>mojo SnapShot</name>
		<releases><enabled>true</enabled></releases>
		<snapshots><enabled>true</enabled></snapshots>
		<url>http://snapshots.repository.codehaus.org</url>
	</pluginRepository>
</pluginRepositories>

という設定にするところまでは何となく分かったんだけど mojo の snapshot リポジトリに pde-maven-plugin-1.0-alpha-2-SNAPSHOT などというバージョンは無いと言われる。確かに
http://snapshots.repository.codehaus.org//org/codehaus/mojo/pde-maven-plugin/1.0-alpha-2-SNAPSHOT/
には pde-mave-plugins-1.0-alpha-2-SNAPSHOT.pom というファイルは無い。

この辺りの仕組みが良く分かってないのでとりあえず逃げの一手で

mvn -U install

でどうにかした(-U は使用プラグイン群をリポジトリの最新でアップデートする)。どうにかして指定する方法はあるんだろうけどどーするんだろうか。
pde-maven-plugin のソースにある pom.xml を見たら解決するのかな−?


また、上記が終わってもさらに問題が。plugins.xmlの中の各属性値の最終文字が日本語の場合に問題があるようだ(例:"fooてすと")。

これは"fooてすと "と、半角空白を入れることで回避されますが、こんな回避法だと後々色々問題になるような・・・

そして、これが解決しても次は build.xml が存在しないと言って怒られる。チュートリアルにはそんなもん作る手順はないわけだが、どーせいと。antはマスターしてるから何をすればよいのか教えてくれれば書けるけどどんな内容を書けばよいのかが全く分からん・・・

JDK6のScripting

ということで、javax.scripting.ScriptEngineを使ってJavaScriptをJDK6上で実行仕様としたわけですが、なぜか jrunscript にはある dir やらが無い。

ちなみに jrunscript で使える関数一覧は下記のサイトが詳しいです。

http://d.hatena.ne.jp/brazil/20060210/1139561436

んで上記のサイトの説明にあるスクリプトをScriptEngineで実行してみると・・・

/*  NAME  : print  TYPE  : function  STRING  : [object Function]*/
function print(str, newline) {
    if (typeof (str) == "undefined") {
        str = "undefined";
    } else {
        if (str == null) {
            str = "null";
        }
    }
    var out = context.getWriter();
    out.print(String(str));
    if (newline) {
        out.print("\n");
    }
    out.flush();
}
/*  NAME  : println  TYPE  : function  STRING  : [object Function]*/
function println(str) {
    print(str, true);
}
/*  NAME  : com  TYPE  : object  STRING  : [object JavaPackage]  VALUE : [JavaPackage com]
*/
/*  NAME  : context  TYPE  : object  STRING  : [object JavaObject]  VALUE : javax.script.SimpleScriptContext@17480c5
*/
/*  NAME  : edu  TYPE  : object  STRING  : [object JavaPackage]  VALUE : [JavaPackage edu]
*/
/*  NAME  : javax  TYPE  : object  STRING  : [object JavaPackage]  VALUE : [JavaPackage javax]
*/
/*  NAME  : net  TYPE  : object  STRING  : [object JavaPackage]  VALUE : [JavaPackage net]
*/
/*  NAME  : org  TYPE  : object  STRING  : [object JavaPackage]  VALUE : [JavaPackage org]
*/

って dir とかさまざまなものが全滅かい・・・どうやって追加するんだろうか??