首先在网上下载了springside-3.3.4-src.zip文件,由于对maven很熟悉,所以非常顺利地安装好了modules下面的项目,并通过mvn install命令将它们安装至maven的本地仓库,接着开始安装examples下的mini-web项目,安装好后,执行bin目录下的db-init.bat脚本进行数据的初始化工作,但意外地报了错,如下图:
从错误上看似乎是和ant相关,因为db-init.bat只是去执行了build.xml里的任务。于是打开build.xml进行查看,由于篇幅原因,只贴出主要代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="mini-web" default="init-db" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<artifact:dependencies pathId="project.lib">
<pom file="../pom.xml" />
</artifact:dependencies>
<property file="../src/main/resources/application.properties" />
<property name="sql.type" value="h2" />
<property name="dbunit.datatype" value="org.dbunit.ext.h2.H2DataTypeFactory" />........................................................
</project>
关键问题就出在这句上:xmlns:artifact="antlib:org.apache.maven.artifact.ant",这是ant提供的一种扩展机制,可以用来引入第三方写好的task供build.xml中调用,要想使用第三方的task要做两件事:
(1)把相关的实现类放到ant可以找到的地方,一般是放在%ANT_HOMG%/lib目录下。
(2)在引入的地方进行定义,定义的方法有好几种,其中一种就是放在ant的类路径下一个xml文件antlib.xml,然后在build.xml文件中,添加一个命名空间的引用, antlib:
protocoll handler 。
结合上面这个问题,由于构建文件中引用了xmlns:artifact="antlib:org.apache.maven.artifact.ant"一个外部的task包,所以需要去http://maven.apache.org/ant-tasks/下一个maven-ant-tasks-2.1.1.jar,在里面有antlib.xml文件,这个jar的作如下:
- Dependency management - including transitive dependencies, scope recognition and SNAPSHOT handling
- Artifact deployment - deployment to a Maven repository (file integrated, other with extensions)
- POM processing - for reading and writing a Maven 2 pom.xml file