ラベル maven の投稿を表示しています。 すべての投稿を表示
ラベル maven の投稿を表示しています。 すべての投稿を表示

2014年2月12日水曜日

Maven での デバッグ

Mavenでのデバッグ方法が検索しても見当たらなかったので
書き留めておきます。



Eclipseを利用している、m2eclipseをインストールしている前提です。


1.プロジェクトを右クリック>Debug As>Maven build...



2.Goalsに goal -Dmaven.surefire.debug test を設定


例) java ファイルを実行する場合
exec:java -Dmaven.surefire.debug test [-Dexec.mainClass="クラス名"] [-Dexec.args="引数"]

例) jettyを実行する場合
jetty:run -Dmaven.surefire.debug test


3.ParameterにName:forkCount Value:0を追加
これがないと、デバッグ用のポートをリスニングするのを回避



Maven v2.0.8 以降はmaven.surefire.debugを利用すれば
ポートを指定したリモートデバッグの必要はありません。
(実はずっとリモートデバッグしていた…)

2013年9月16日月曜日

小ネタ mavenを使ってjava -cp を実行しよう

java -cp たまに使うけどライブラリを探したりするの面倒
ライブラリとか全部mavenに任せようぜという人向け

下のようなコマンドを実行しろとかたまにある
java -cp lib/jetty-util-xxx.jar org.eclipse.jetty.util.security.Password password
 
 
こういうのはpom.xmlで下みたいに指定して
つぎのコマンドを実行すればOK

mvn exec:java -Dexec.mainClass="org.eclipse.jetty.util.security.Password" -Dexec.args="password" --quiet  



pom.xml :
 
<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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.gauuud.passgen</groupId>
 <artifactId>passgen</artifactId>
 <version>0.0.1</version>
 <dependencies>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-util</artifactId>
   <version>8.1.12.v20130726</version>
  </dependency>
 </dependencies>
</project>
 
 
または、mainClassをpomで指定する
mvn exec:java -Dexec.args="password" --quiet  

<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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.gauuud.passgen</groupId>
 <artifactId>passgen</artifactId>
 <version>0.0.1</version>
 <dependencies>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-util</artifactId>
   <version>8.1.12.v20130726</version>
  </dependency>
 </dependencies>
  <build>
    <plugins>
      <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.2.1</version>              
        <configuration>
          <mainClass>org.eclipse.jetty.util.security.Password</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
 </project>
 
 
または、mainClassを指定してjar化する 
mvn packageしてtarget以下のjar-with-dependenciesを実行する
 
java -jar passgen-0.0.1-jar-with-dependencies.jar password 


pom.xml

<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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.gauuud.passgen</groupId>
 <artifactId>passgen</artifactId>
 <version>0.0.1</version>
 <dependencies>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-util</artifactId>
   <version>8.1.12.v20130726</version>
  </dependency>
 </dependencies>
 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <mainClass>org.eclipse.jetty.util.security.Password</mainClass>
       <packageName>passgen</packageName>
       <addClasspath>true</addClasspath>
       <addExtensions>true</addExtensions>
       <classpathPrefix>dependency</classpathPrefix>
      </manifest>
     </archive>
     <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
     </descriptorRefs>
    </configuration>
   </plugin>
   <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
     <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
     </descriptorRefs>
     <archive>
      <manifest>
       <mainClass>org.eclipse.jetty.util.security.Password</mainClass>
      </manifest>
     </archive>

    </configuration>
    <executions>
     <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- append to the packaging phase. -->
      <goals>
       <goal>single</goal> <!-- goals == mojos -->
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>
</project>





 
 
あまり効率的とは言えない?
プライベートリポジトリに登録して使い回せばいいじゃないか
nexusよいですよ 

2013年1月3日木曜日

jetty maven gzipフィルター適用

maven上のjetty plugin でgzip を適用する方法。
このあたりの内容です。

http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Using_GZip_Compression_and_Other_Jetty_Extensions


pom.xmlのプラグイン設定にdependancyを追加

<plugin>
       
<groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>                                        <version>8.1.8.v20121106</version>
         <configuration>
           [...]
       
</configuration>
         <dependencies> 
         <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-servlets</artifactId>
             <version>8.1.8.v20121106</version>
           </dependency>
         </dependencies>


web.xmlにgzipフィルターを定義

  <filter>
    <filter-name>GzipFilter</filter-name>
    <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
    <init-param>
      <param-name>mimeTypes</param-name>
      <param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>GzipFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>



pom.xmlにdependancyを追加していないと
ClassNotFoundExceptionで怒られます

2011年12月8日木曜日

MavenのJDKバージョン設定

激しく構成が乱れてるけど、とりあえず公開しておきます。
そのうち直します。


Mavenでコンパイルエラーが発生しました。


注釈は -source 1.3 でサポートされていません
(注釈を使用可能にするには、-source 5 以降を使用してください)
    @Override

MavenのデフォルトでJDK1.3を使用しているために発生しているようです。
JDK1.3だと注釈、型指定のリスト、Foreach等が使えず割と不便。
 JDKを変更するためにはpom.xmlのpluginに次の項を追加します。


 <build>
 <properties>
  <java.version>1.6</java.version>
 </properties>
 
 <plugins>
  <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>2.3.2</version>
   <configuration>
    <source>${java.version}</source>
    <target>${java.version}</target>
   </configuration>
  </plugin>
 
参考
https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

2011年10月27日木曜日

maven: jetty plugin ssl オレオレ証明書 の設定

jetty plugin 8.x での設定

1.keystore の作成
JDKのkeytoolでkeystoreを作成する。

keytool -keystore keystore -alias jetty -genkey -keyalg RSA -storepass (pass) -keypass (pass) -dname "CN=(domain)"


作成されたkeystoreを任意の場所へ


2.pom.xmlの編集
下記のようにpom.xmlにJetty pluginの設定を編集。
jetty-maven-pluginの"<connectors>"にSslSocketConnectorを追加する。

<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
            <port>8443</port>
            <maxIdleTime>60000</maxIdleTime>
            <keystore>(任意のkeystoreへのパス)</keystore>
            <password>(pass)</password>
            <keyPassword>(pass)</keyPassword>
      </connector>


3.パスワードの暗号化
pom.xmlにパスワードを平文で保存するのは良くないので、
暗号化する。
java -cp jetty-http-8.x.jar:jetty-util-8.x.jar org.eclipse.jetty.http.security.Password (pass)


を実行すると、(pass)->jetty6の場合
jetty6
OBF:1ktv1x0r1z0f1z0f1x1v1kqz
MD5:e032a01e5c4dbb03a29fb031f6b37658


というような値が取得できるので、OBFまたはMD5をpom.xmlに入力する。





ついでに、iPhone等の開発でオレオレ証明書を利用する場合は、
NSURLRequestなら次のようなimplementの追加

@implementation NSURLRequest(NSHTTPURLRequest)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
   return YES; // Or whatever logic
}
@end


ASIHttpRequestならvalidatesSecureCertificate = NOでOK

2011年9月8日木曜日

maven on eclipse : m2e

mavenをeclipseで使用する方法。(9/8現在)

基本的には下記リンクを参照する。

http://d.hatena.ne.jp/Kishi/20090228/1235813480

  で、私がやってみてつまずいたところを上げてみる。

 

2. m2eclipseのインストール のリンクが切れてるので下記リンクに変更する。

http://download.eclipse.org/technology/m2e/releases

 

6. jettyをサーバとして起動 

「ゴール」の「選択」 画面に遷移しても「ゴール」の候補が出てきません。

Mavenレポジトリを読み込んでいないさいのバグのようです。(参照)

Mavenレポジトリビュー(Window->Show View->Other->Mavenカラ追加)から

右クリックで、「Full Index Enabled」を選択し「Rebuild Index」を実行します。

10分ぐらいかかる。 

下のタスクトレイに表示される進捗はずっと0%ですが実際は進捗してます。(バグ?)

Rebuild後は「ゴール 」の選択候補が表示されるようになります。