java程序調(diào)用一堆第三方庫(kù)是很常見(jiàn)的事情,例子程序中就調(diào)用了網(wǎng)上常見(jiàn)庫(kù)jdom讀取xml文件.
package com.sitinspring;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;


public class Inlet
{

public static void main(String[] arg)
{

try
{
SAXBuilder builder=new SAXBuilder ();
InputStream is =Inlet.class.getResourceAsStream( "/testfile.xml" );
Document doc=builder.build(is);

Element root=doc.getRootElement();
List ls=root.getChildren();


for(Iterator it=ls.iterator();it.hasNext();)
{
Element elm=(Element )it.next();
System.out.println(elm.getName());
}
}

catch(Exception ex)
{
ex.printStackTrace();
}
}
}
如何讓Maven工程也能找到Jdom庫(kù)呢,很簡(jiǎn)單,添加一個(gè)dependency節(jié)點(diǎn)就能做到,詳情請(qǐng)見(jiàn)下列代碼的jdom處.
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sitinspring</groupId>
<artifactId>Maevn3ndPart</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maevn3ndPart</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
然后執(zhí)行Mvn compile就可以看見(jiàn),Maven從網(wǎng)上下載了jdom庫(kù)到本地的repository目錄,請(qǐng)看下圖.

將dependency節(jié)點(diǎn)和repository中jdom路徑對(duì)比就可以知道,dependency節(jié)點(diǎn)中g(shù)roupId對(duì)應(yīng)路徑中第一層目錄,artifactId對(duì)應(yīng)第二層,version對(duì)應(yīng)第三層,而scope用于編譯則是compile.這些發(fā)現(xiàn)我們以后還將用到.
本文例程:
http://www.tkk7.com/Files/sitinspring/Maevn3ndPart20070621133225.zip 附錄:
Dependency Scope
在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可以使用5個(gè)值:
- compile,缺省值,適用于所有階段,會(huì)隨著項(xiàng)目一起發(fā)布。
- provided,類似compile,期望JDK、容器或使用者會(huì)提供這個(gè)依賴。如servlet.jar。
- runtime,只在運(yùn)行時(shí)使用,如JDBC驅(qū)動(dòng),適用運(yùn)行和測(cè)試階段。
- test,只在測(cè)試時(shí)使用,用于編譯和運(yùn)行測(cè)試代碼。不會(huì)隨項(xiàng)目發(fā)布。
- system,類似provided,需要顯式提供包含依賴的jar,Maven不會(huì)在Repository中查找它。