我正在尝试使用此处描述的3个步骤创建自定义Maven存储库 - 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>
Run Code Online (Sandbox Code Playgroud)
现在我试图在像这样的pom文件中使用hasp工件:
<dependency>
<groupId>com.safenet</groupId>
<artifactId>hasp</artifactId>
<version>1</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并且存储库的引用如下:
<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>
Run Code Online (Sandbox Code Playgroud)
不幸的是,它没有按预期工作:
[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>
Run Code Online (Sandbox Code Playgroud)
我不知道它有什么问题.md5和sha1文件是使用md5sum和sha1sum实用程序的cygwin端口创建的.不过,Maven报告的校验和错误.
Cas*_*dan 12
我来这里寻找同样的答案.花了好几个小时试图搞清楚后,我终于发现这种情况发生的原因有两个:
所以基本上javaworld.com上的教程完全或至少部分错误.
那么答案是什么:
-DcreateChecksum=true
在mvn install:install-file
命令中使用param .maven-metadata-local
生成的文件以删除该local
部件.我决定经常这样做,我会创建一个bash脚本来自动化这个过程,也许你会发现它也很有用.
我设计了下面的脚本,在temp目录中运行整个过程,然后压缩结果,然后只需上传到自定义存储库.
#! /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
Run Code Online (Sandbox Code Playgroud)
假设您要将myjar.jar打包为自定义存储库:
./bundle-for-remote.sh -g com.mygroup -a myJar -f myJar.jar
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中创建一个名为com.mygroup.myJar.zip的.zip,其中包含所有组件.
干杯,
卡西
从您上面粘贴的内容来看,我在您的存储库中没有看到 com.shunra:license:jar:0.0.1 。尝试将其安装到您的存储库中。或者Maven可以在某个地方找到它。
虽然错误说“没有可用的校验和信息”,但我认为它真正想说的是“我什至在那里找不到它”
另外..如果你是那些喜欢走捷径的人之一,你总是可以通过去掉<checksumPolicy>fail</checksumPolicy>来跳过校验和验证
归档时间: |
|
查看次数: |
36675 次 |
最近记录: |