2013-01-16 37 views
7

मैं यहां वर्णित 3 चरणों का उपयोग करके कस्टम मैवेन रिपोजिटरी बनाने की कोशिश कर रहा हूं - http://www.javaworld.com/community/node/3968। तो, मैं सभी चरणों का अनुसरण और यहाँ मैं भंडार है:मैवेन: "चेकसम सत्यापन विफल रहा, भंडार से कोई चेकसम उपलब्ध नहीं है", क्यों?

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> 

मुझे नहीं पता कि इसमें क्या समस्या है। Md5s और sha1 फ़ाइलें md5sum और sha1sum उपयोगिताओं के सिग्विन पोर्ट का उपयोग करके बनाई गई थीं। फिर भी, मैवेन खराब चेकसम की रिपोर्ट करता है।

मैं यहां किसी भी मदद की सराहना करूंगा।

उत्तर

10

मैं यहाँ एक ही जवाब की तलाश में आया। घंटे खर्च यह पता लगाने की कोशिश के बाद मैं अंत में पाया गया है कि कारण यह हो रहा है दो गुना है: वास्तव में क्या Maven

  • आप सभी के लिए चेकसम की जरूरत की तलाश में है नहीं

    1. md5sum और shasum द्वारा बनाई चेकसम कर रहे हैं फ़ाइलें।

    तो मूल रूप से javaworld.com पर ट्यूटोरियल पूरी तरह से या कम से कम आंशिक रूप से गलत है।

    तो क्या जवाब:

    1. अपने mvn install:install-file आदेश पर -DcreateChecksum=true परम का प्रयोग करें।
    2. local भाग को निकालने के लिए उत्पन्न maven-metadata-local फ़ाइलों का नाम बदलें।

    मैंने फैसला किया कि मैं अक्सर ऐसा करूँगा मैं प्रक्रिया को स्वचालित करने के लिए एक बैश स्क्रिप्ट तैयार करूंगा, शायद आपको यह भी उपयोगी लगेगा।

    मैंने पूरी प्रक्रिया को अस्थायी निर्देशिका में चलाने के लिए नीचे दी गई स्क्रिप्ट तैयार की है, फिर परिणामों को ज़िप करें, जिसे आप बस अपने कस्टम भंडार में अपलोड कर सकते हैं।

    #! /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 को पैकेज करना चाहते हैं।अपने कस्टम भंडार के लिए जार:

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

    कौन सा सभी घटकों के साथ com.mygroup.myJar.zip कहा जाता है अपने वर्तमान निर्देशिका में एक .zip पैदा करेगा।

    चीयर्स,

    केसी

  • +0

    मैं इसका परीक्षण करने के दायरे से बाहर हूं, लेकिन इसे वैसे भी जवाब के रूप में स्वीकार कर रहा हूं। – mark

    3

    जो आपने ऊपर चिपकाया है, उससे मुझे com.shunra नहीं दिख रहा है: लाइसेंस: जार: 0.0.1 आपके भंडार में। इसे अपने भंडार में स्थापित करने का प्रयास करें। या कहीं मैवेन इसे पा सकते हैं।

    हालांकि त्रुटि कहते हैं, "उपलब्ध नहीं checksum जानकारी", मुझे लगता है कि यह वास्तव में कहने के लिए था, "मैं भी यह आपको वहां नहीं कर सकते हैं"

    भी .. यदि आप लेने की तरह उन में से एक रहे हैं चाहता था शॉर्टकट, आप हमेशा दूर < checksumPolicy लेने के द्वारा चेकसम सत्यापन छोड़ सकते हैं> असफल </checksumPolicy>

    +0

    +1 - खैर, वे रेपो में कर रहे हैं, के बाद से चेकसम नीति को अक्षम करने के लिए स्थानीय .m2 भंडार में संबंधित जार डाउनलोड करता है। तो, चेकसम वास्तव में समस्या है। बीटीडब्ल्यू, आप उन्हें रेपो में क्यों नहीं देख सकते? 'Dir/s/b' आउटपुट में जार फ़ाइलों पर ध्यान दें। मैं जवाब के रूप में आपके उत्तर को श्रेय देना चाहता हूं, अगर आप केवल चेकसम मुद्दे के लिए फिक्स प्रदान कर सकते हैं, तो अभी यह एक कामकाज है। – mark

    +0

    बीटीडब्ल्यू, अगर आपको लगता है कि भंडार खराब है, तो कृपया मुझे बताएं कि इसे कैसे बनाया जाना चाहिए। – mark

    +0

    आपके द्वारा उपरोक्त चिपकने वाली सामग्री पर, मैं केवल दो चीजें देख सकता हूं: com.safenet.hasp: jar और org.jnetcap: jnetcap: jar। मुझे com.shunra नहीं दिख रहा है: लाइसेंस: जार। चेकसम के बारे में, क्या आपने उपरोक्त वर्णित विफल को निकालने का प्रयास किया है? – gerrytan

     संबंधित मुद्दे

    • कोई संबंधित समस्या नहीं^_^