2013-01-16 22 views
7

ここで説明する3つのステップ、つまりhttp://www.javaworld.com/community/node/3968を使用してカスタムMavenリポジトリを作成しようとしています。だから、私はすべての手順に従い、ここで私は、リポジトリを持っている:私はこのようなポンポンファイルに掛け金のアーティファクトを使用しようとしています今maven: "チェックサムの検証に失敗しました。リポジトリからチェックサムがありません"、なぜですか?

D:\maven2>dir /s/b 
D:\maven2\com 
D:\maven2\org 
D:\maven2\web.config 
D:\maven2\com\safenet 
D:\maven2\com\safenet\hasp 
D:\maven2\com\safenet\hasp\1 
D:\maven2\com\safenet\hasp\maven-metadata.xml 
D:\maven2\com\safenet\hasp\maven-metadata.xml.md5 
D:\maven2\com\safenet\hasp\maven-metadata.xml.sha1 
D:\maven2\com\safenet\hasp\1\hasp-1.jar 
D:\maven2\com\safenet\hasp\1\hasp-1.pom 
D:\maven2\com\safenet\hasp\1\_maven.repositories 
D:\maven2\org\jnetpcap 
D:\maven2\org\jnetpcap\jnetcap 
D:\maven2\org\jnetpcap\jnetcap\1.3 
D:\maven2\org\jnetpcap\jnetcap\maven-metadata.xml 
D:\maven2\org\jnetpcap\jnetcap\maven-metadata.xml.md5 
D:\maven2\org\jnetpcap\jnetcap\maven-metadata.xml.sha1 
D:\maven2\org\jnetpcap\jnetcap\1.3\jnetcap-1.3.jar 
D:\maven2\org\jnetpcap\jnetcap\1.3\jnetcap-1.3.pom 
D:\maven2\org\jnetpcap\jnetcap\1.3\_maven.repositories 

D:\maven2>type com\safenet\hasp\maven-metadata.xml 
<?xml version="1.0" encoding="UTF-8"?> 
<metadata> 
    <groupId>com.safenet</groupId> 
    <artifactId>hasp</artifactId> 
    <versioning> 
    <release>1</release> 
    <versions> 
     <version>1</version> 
    </versions> 
    <lastUpdated>20130108125547</lastUpdated> 
    </versioning> 
</metadata> 

D:\maven2>type org\jnetpcap\jnetcap\maven-metadata.xml.md5 
297455697088aad6bdbe256d48fb0676 *maven-metadata.xml 

D:\maven2>type org\jnetpcap\jnetcap\maven-metadata.xml.sha1 
f86d93727a76525f42f1b67997020e1a9a41b948 *maven-metadata.xml 

D:\maven2>type org\jnetpcap\jnetcap\1.3\jnetcap-1.3.pom 
<?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> 
    <groupId>org.jnetpcap</groupId> 
    <artifactId>jnetcap</artifactId> 
    <version>1.3</version> 
    <description>POM was created from install:install-file</description> 
</project> 

D:\maven2> 

<dependency> 
    <groupId>com.safenet</groupId> 
    <artifactId>hasp</artifactId> 
    <version>1</version> 
    <scope>provided</scope> 
</dependency> 

とリポジトリが同じように参照されますこの:

<repository> 
    <releases> 
    <enabled>true</enabled> 
    <updatePolicy>always</updatePolicy> 
    <checksumPolicy>fail</checksumPolicy> 
    </releases> 
    <id>dev-builder</id> 
    <name>Shunra private repository</name> 
    <url>http://dev-builder/maven2</url> 
    <layout>default</layout> 
</repository> 

残念ながら、それが期待どおりに動作しません:

[INFO] Building license 0.0.1 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://dev-builder/maven2/com/safenet/hasp/1/hasp-1.pom 
[WARNING] The POM for com.safenet:hasp:jar:1 is missing, no dependency information available 
Downloading: http://dev-builder/maven2/com/safenet/hasp/1/hasp-1.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Local Driver Proxy ................................ SUCCESS [2.579s] 
[INFO] Emulation API ..................................... SUCCESS [1.637s] 
[INFO] util.logging ...................................... SUCCESS [1.023s] 
[INFO] Infra ............................................. SUCCESS [0.250s] 
[INFO] dtos .............................................. SUCCESS [0.691s] 
[INFO] commons ........................................... SUCCESS [0.426s] 
[INFO] license ........................................... FAILURE [2.195s] 
[INFO] core .............................................. SKIPPED 
[INFO] vcat .............................................. SKIPPED 
[INFO] VCat-build ........................................ SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 9.044s 
[INFO] Finished at: Tue Jan 15 21:27:43 EST 2013 
[INFO] Final Memory: 6M/15M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project license: Could not resolve dependencies for project com.shunra:license:jar:0.0.1: Could not transfer artifact com.safenet:hasp:jar:1 from/to dev-builder (http 
://dev-builder/maven2): Checksum validation failed, no checksums available from the repository -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :license 
c:\dev\shunra\Application\Builder\build\vcat> 

問題の原因は何もわかりません。 md5とsha1ファイルは、md5sumとsha1sumユーティリティのcygwinポートを使って作成されました。それでも、mavenはチェックサムが正しくないと報告します。

私はここで助けていただきありがとうございます。

答えて

10

私は同じ答えを探してここに来ました。まさに達人あなたはすべてのためのチェックサムを必要とする

  • を探していません

    1. のmd5sumとshasumによって作成されたチェックサムがされています。それを理解しようとしている時間を過ごした後、私は最終的にこれが起こっている理由は2倍であることがわかりましたファイル。

    基本的にjavaworld.comのチュートリアルは、完全にまたは少なくとも部分的に間違っています。

    だから、答えはいただきました:

    1. があなたのmvn install:install-fileコマンドで-DcreateChecksum=trueのparamを使用してください。
    2. local部分を削除するために生成されたmaven-metadata-localファイルの名前を変更します。

    私はこのプロセスを自動化するためのbashスクリプトを作成するのに十分なほど頻繁にこれを行うと決めました。

    以下のスクリプトを使用して、プロセス全体を一時ディレクトリで実行した後、結果を圧縮してカスタムリポジトリにアップロードすることができます。

    #! /bin/bash 
    
    USAGE(){ 
        println "Usage: `basename $0` -g GroupId -a ArtifactId -f file [-voh] args\n\n"; 
    
        println "Options:"; 
        println " h Print usage"; 
        println " v Version (Defaults to 1.0)"; 
        println " o Output zip file name (Defaults to GroupId.ArtifactId.zip)"; 
    
    
    } 
    println(){ 
    
        echo "$1"; 
    } 
    
    
    VERSION="1.0"; 
    
    # Parse command line options. 
    while getopts hv:o:g:a:f: OPT; do 
        case "$OPT" in 
         h) 
          USAGE 
          exit 0 
          ;; 
         v) 
          VERSION=$OPTARG; 
          ;; 
        g) 
          GROUP_ID=$OPTARG; 
          ;; 
        a) 
          ARTIFACT_ID=$OPTARG; 
          ;; 
        f) 
          INPUT_FILE=$OPTARG 
          ;; 
         o) 
          OUTPUT_FILE=$OPTARG 
          ;; 
         \?) 
          # getopts issues an error message 
         echo "Error: " >&2; 
          USAGE 
          exit 1 
          ;; 
        esac 
    done 
    
    if [ -z "${OUTPUT_FILE}" ]; then 
        OUTPUT_FILE="$GROUP_ID.$ARTIFACT_ID.zip"; 
    fi 
    
    
    
    # Remove the switches we parsed above. 
    shift `expr $OPTIND - 1` 
    
    if [ -z "${ARTIFACT_ID}" ]; then 
        echo "Error: You must specify an artifact id." 
    fi 
    
    if [ -z "${GROUP_ID}" ]; then 
        echo "Error: You must specify an group id." 
    fi 
    
    if [ -z "${INPUT_FILE}" ]; then 
        echo "Error: You must specify an group id." 
    fi 
    
    if [ ! -f "${INPUT_FILE}" ]; 
    then 
        echo "Error: Input file '$INPUT_FILE' does not exist." 
    fi 
    
    # Create a temp directory which we will use as our 'local repository' 
    TEMPDIR=$(mktemp -dt "build-maven-dep.XXXXXXX") 
    
    TEMPDIR_SUB="$GROUP_ID.$ARTIFACT_ID"; 
    TEMP_REPO_LOC="$TEMPDIR/$TEMPDIR_SUB"; 
    mkdir -p $TEMP_REPO_LOC; 
    
    mvn install:install-file -DlocalRepositoryPath=$TEMP_REPO_LOC -DgroupId=$GROUP_ID -DartifactId=$ARTIFACT_ID -Dversion=$VERSION -Dfile=$INPUT_FILE -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true 
    
    CUR_DIR=$(pwd); 
    
    # Enter the temp repository we created which is now populated. 
    cd $TEMP_REPO_LOC; 
    
    PACKAGE_STRUC="$GROUP_ID.$ARTIFACT_ID"; 
    
    # Dive down into directory structure until we get to the *.xml files. 
    IFS='. ' read -ra ADDR <<< $PACKAGE_STRUC 
    for i in "${ADDR[@]}"; do 
        println "Moving into: $i"; 
        cd $i; 
        println "Now in $(pwd)"; 
    done 
    
    # Rename the files to what maven expects. 
    mv maven-metadata-local.xml maven-metadata.xml 
    mv maven-metadata-local.xml.md5 maven-metadata.xml.md5 
    mv maven-metadata-local.xml.sha1 maven-metadata.xml.sha1 
    
    # Zip up our results. 
    cd $TEMP_REPO_LOC; 
    cd ..; 
    zip -r $OUTPUT_FILE $TEMPDIR_SUB 
    mv $OUTPUT_FILE $CUR_DIR 
    
    # Return back to our original directory and remove the temp directory 
    cd $CUR_DIR; 
    rm -Rf $TEMPDIR; 
    
    # EOF 
    

    myjarをパッケージ化したいとします。カスタムリポジトリ用のjar:すべてのコンポーネントをcom.mygroup.myJar.zipと呼ばれる現在のディレクトリに.zipファイルを作成します

    ./bundle-for-remote.sh -g com.mygroup -a myJar -f myJar.jar 
    

    乾杯、

    ケーシー

  • +0

    私はそれをテストするには範囲外ですが、とにかく答えとして受け入れます。 – mark

    3

    あなたが上に貼り付けたものから、あなたのリポジトリにcom.shunra:license:jar:0.0.1が表示されません。リポジトリにインストールしてみてください。またはどこかでmavenがそれを見つけることができます。エラーは、「利用可能なチェックサム情報を」と言いませんが

    は、私はそれが本当にあなたが取るよう、これらのいずれかをしている場合...また

    「私もそこにそれを見つけることができません」だったと言うために何を望むかと思いますショートカット、あなたは常に</checksumPolicyに失敗>離れ< checksumPolicy取ることによって、チェックサム検証をスキップすることができます>

    +0

    1 - チェックサムのポリシーを無効にするローカル.m2リポジトリにそれぞれのjarファイルをダウンロードするので、まあ、彼らは、レポです。だから、チェックサムは本当に問題です。ところで、なぜあなたはレポでそれらを見ることができないのですか? 'dir/s/b'出力のjarファイルに注目してください。私は答えとしてあなたの返信をクレジットしたいと思います。あなたがチェックサムの問題の修正を提供できるのであれば、今はむしろ回避策です。 – mark

    +0

    ところで、リポジトリの形式が間違っていると思われる場合は、作成方法を教えてください。上記で貼り付けたリポジトリの内容には – mark

    +0

    があります。私は、com.safenet.hasp:jarとorg.jnetcap:jnetcap:jarの2つしか見ることができません。私はcom.shunra:license:jarを見ません。また、チェックサムについては、上記のように failを取り出してみましたか? – gerrytan

    関連する問題