設(shè)置Maven組件庫(kù)倉(cāng)庫(kù)_第1頁(yè)
設(shè)置Maven組件庫(kù)倉(cāng)庫(kù)_第2頁(yè)
設(shè)置Maven組件庫(kù)倉(cāng)庫(kù)_第3頁(yè)
設(shè)置Maven組件庫(kù)倉(cāng)庫(kù)_第4頁(yè)
設(shè)置Maven組件庫(kù)倉(cāng)庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、設(shè)置Maven倉(cāng)庫(kù)1. 介紹Maven是Java開(kāi)發(fā)者中流行的構(gòu)建工具,Maven的好處之一是可以幫助減少構(gòu)建應(yīng)用程序時(shí)所依賴的軟件構(gòu)件的副本,Maven建議的方法是將所有軟件構(gòu)件存儲(chǔ)于一個(gè)叫做repository的遠(yuǎn)程倉(cāng)庫(kù)中。Maven會(huì)從中的公用倉(cāng)庫(kù)中同步構(gòu)件,這個(gè)公用倉(cāng)庫(kù)下載緩慢、不穩(wěn)定,并且不包含一些構(gòu)件的最新版本,而且不能上傳團(tuán)隊(duì)私有的構(gòu)件。通過(guò)設(shè)置內(nèi)部Maven倉(cāng)庫(kù),團(tuán)隊(duì)可以更有好地利用Maven倉(cāng)庫(kù)的優(yōu)勢(shì)并且克服使用ibiblio上的倉(cāng)庫(kù)時(shí)的缺點(diǎn)。本文著眼于Maven倉(cāng)庫(kù)工具應(yīng)提供的一些功能,列出了選擇Maven倉(cāng)庫(kù)工具的標(biāo)準(zhǔn),說(shuō)明了使用Artifactor

2、y設(shè)置Maven倉(cāng)庫(kù)的相關(guān)步驟。在Linux和Windows中設(shè)置Maven倉(cāng)庫(kù)的過(guò)程是相同的,少數(shù)不同點(diǎn)在文中已經(jīng)用高亮顯示,本文列出了與這個(gè)Maven倉(cāng)庫(kù)的使用有關(guān)的POM文件的范例,用截圖來(lái)向用戶闡述如何設(shè)置Maven倉(cāng)庫(kù),Maven和artifactory配置范例也有列出。1.1 背景知識(shí)本文假定讀者熟悉以下的概念和技術(shù):l Maven 2 l J2EE web 服務(wù)器部署過(guò)程(e.g. 在Tomcat中部署Web應(yīng)用程序) l XML 1.2 Maven倉(cāng)庫(kù)的目的 Maven倉(cāng)庫(kù)的目的是作為團(tuán)隊(duì)內(nèi)所使用的所有軟件構(gòu)件的內(nèi)部私有構(gòu)件倉(cāng)庫(kù),將Maven構(gòu)件(jar和pom)存儲(chǔ)到一個(gè)專門

3、的Maven倉(cāng)庫(kù)比將它們存儲(chǔ)到版本控制系統(tǒng)中更有優(yōu)勢(shì),這是因?yàn)椋簂 構(gòu)件(jar)是二進(jìn)制文件,不屬于版本控制系統(tǒng),版本控制系統(tǒng)在處理文本文件方面比較好l 保持較小的版本控制數(shù)據(jù)庫(kù)l Checkout、update和其他版本控制的操作可以更快1.3 建立內(nèi)部私有倉(cāng)庫(kù)的優(yōu)勢(shì): l 減少可能的版本沖突 l 減少首次構(gòu)建時(shí)需要的手動(dòng)干涉 l 中央倉(cāng)庫(kù)包含所有依賴的軟件構(gòu)件,引用單一的中央倉(cāng)庫(kù)比引用多個(gè)獨(dú)立的本地庫(kù)要好 l 使用內(nèi)部倉(cāng)庫(kù)做clean構(gòu)建時(shí)會(huì)快些,因?yàn)镸aven構(gòu)件是從內(nèi)部服務(wù)器而不是從因特網(wǎng)上的ibiblio服務(wù)器獲取。 1.4 Maven構(gòu)件庫(kù)的類型 l 本地倉(cāng)庫(kù)位于開(kāi)發(fā)者的機(jī)器,由

4、開(kāi)發(fā)者維護(hù),它從位于home/.m2 目錄的settings.xml文件中定義的Maven倉(cāng)庫(kù)上同步,如果在pom.xml或setting.xml文件中沒(méi)有設(shè)置內(nèi)部私有遠(yuǎn)程倉(cāng)庫(kù),那么開(kāi)發(fā)者機(jī)器上的這個(gè)本地倉(cāng)庫(kù)就會(huì)從 上的公用Maven倉(cāng)庫(kù)上同步。 l 內(nèi)部私有遠(yuǎn)程倉(cāng)庫(kù)這是我們將要設(shè)置的倉(cāng)庫(kù),我們將改變maven 的pom.xml或settings.xml文件來(lái)使用這個(gè)庫(kù)。 l 外部公用遠(yuǎn)程倉(cāng)庫(kù)這是在上的外部公用倉(cāng)庫(kù),默認(rèn)情況下,Maven從這個(gè)倉(cāng)庫(kù)上同步。 l2.Maven倉(cāng)庫(kù)概覽2.1 沒(méi)有Maven倉(cāng)庫(kù)下的開(kāi)發(fā)環(huán)境2.2 具有團(tuán)隊(duì)內(nèi)部遠(yuǎn)程倉(cāng)庫(kù)的開(kāi)

5、發(fā)環(huán)境3. 本教程Maven倉(cāng)庫(kù)的用例介紹l 在內(nèi)部倉(cāng)庫(kù)中創(chuàng)建2個(gè)子庫(kù) l Ibiblio 緩存Ibiblio-cache 用于存儲(chǔ)從中下載的構(gòu)件,可以公開(kāi)訪問(wèn),它將從外部的ibiblio倉(cāng)庫(kù)中同步 l 內(nèi)部倉(cāng)庫(kù)internal-maven-repository用于存儲(chǔ)團(tuán)隊(duì)內(nèi)部的構(gòu)件,它不與任何外部倉(cāng)庫(kù)同步,是團(tuán)隊(duì)專有的構(gòu)件庫(kù) l 可以創(chuàng)建另一個(gè)子倉(cāng)庫(kù),這是可選的,用于存儲(chǔ)那些公用的但是在ibiblio上暫時(shí)沒(méi)有的構(gòu)件,例如一些構(gòu)件的新最版本,這個(gè)倉(cāng)庫(kù)不與內(nèi)部倉(cāng)庫(kù)同步。我們可以稱它為第三方3rd-partyl 瀏覽遠(yuǎn)程庫(kù),最好是通過(guò)一個(gè)web瀏覽器l 在倉(cāng)庫(kù)中搜索構(gòu)件 l

6、 從版本控制系統(tǒng)中下載代碼,修改settings.xml指向內(nèi)部倉(cāng)庫(kù)并且做一次沒(méi)有任何手工干涉的clean構(gòu)建l 向倉(cāng)庫(kù)中安裝一個(gè)構(gòu)件的新版本l 向倉(cāng)庫(kù)中大批導(dǎo)入構(gòu)件l 從倉(cāng)庫(kù)中大批導(dǎo)出構(gòu)件l 手動(dòng)備份倉(cāng)庫(kù),設(shè)置定時(shí)自動(dòng)備份任務(wù)4. Maven倉(cāng)庫(kù)工具的選擇標(biāo)準(zhǔn)理想的Maven倉(cāng)庫(kù)工具應(yīng)該:l 開(kāi)放源碼并且免費(fèi) l 提供管理工具 l 提供倉(cāng)庫(kù)瀏覽器最好是web瀏覽器而不是桌面應(yīng)用程序 l 可以部署到標(biāo)準(zhǔn)web服務(wù)器中例如Apache或Tomcat l 創(chuàng)建、編輯、刪除子庫(kù)的能力 l 批量導(dǎo)入/導(dǎo)出的工具,用來(lái)向構(gòu)件庫(kù)或從構(gòu)件庫(kù)移動(dòng)構(gòu)件 l 訪問(wèn)控制工具和匿名只讀訪問(wèn) l 安裝和使用簡(jiǎn)單 l 備

7、份功能 l 問(wèn)題追蹤,論壇或其他獨(dú)立的信息來(lái)源 l 活躍的社區(qū)/開(kāi)發(fā)者,這樣產(chǎn)品才能改進(jìn),bug才能修正5. 不同Maven倉(cāng)庫(kù)工具的比較一些流行且免費(fèi)的Maven倉(cāng)庫(kù)工具有:l 標(biāo)準(zhǔn)Maven代理codehaus / l Dead simple Maven Proxy (DSMP) - http:/www.pdark.de/dsmp/ l Proximity - / l Artifactory - /sites/artifac

8、tory/latest/ 下面列出了一個(gè)比較:codehausDSMPProximityArtifactory管理工具否基本是是構(gòu)件庫(kù)瀏覽器基本否是是部署到標(biāo)準(zhǔn)Web服務(wù)器是,但不可配置否是是(與Jetty綁定,支持Tomcat)子庫(kù)管理是是是是批量導(dǎo)入/導(dǎo)出構(gòu)件否否否是安裝使用簡(jiǎn)單是是(從代碼構(gòu)建)是是(AJAX界面)備份功能否否否是(使用quartz和cron表達(dá)式)問(wèn)題追蹤JIRA,IRC否Wiki issues TrackerJira issues Tracker(良好的在線文檔)研究過(guò)以上所有產(chǎn)品之后得出結(jié)論,Artifactory 擁有我們要的所有標(biāo)準(zhǔn)。Proximity看樣子也有

9、許多我們要的特性,我們將著眼于Artifactory 的使用。關(guān)于Artifactory 的其他方面:l 符合我們的需求 l Apache 2.0 許可 l 運(yùn)行于JDK 1.6和Tomcat 6。Artifactory以war文件形式部署到Tomcatl 使用Derby數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)構(gòu)件,數(shù)據(jù)以一個(gè)已發(fā)布的知名的格式存儲(chǔ)l 所有構(gòu)件可以被批量導(dǎo)出到本地庫(kù)然后導(dǎo)入到其他庫(kù),因而易于將構(gòu)件從一個(gè)倉(cāng)庫(kù)工具移到另一個(gè),它也使得Maven庫(kù)的升級(jí)非常容易 l 兼容Java Content Repository 標(biāo)準(zhǔn)(JSR-170)。 l 使用Lucene作為搜索引擎,倉(cāng)庫(kù)可以被索引和重新索引 l Aj

10、ax界面l 易于定制界面 l 使用JIRA作為問(wèn)題追蹤系統(tǒng)6. 設(shè)置Maven倉(cāng)庫(kù)6.1 軟件需求 l Artifactory從/sites/artifactory/latest/下載和安裝,當(dāng)前最新版本是1.2.1-rc1,Artifactory是一個(gè)可以被安裝到Tomcat中去的Web應(yīng)用程序 l JDK 1.6 更多信息請(qǐng)參閱/sites/artifactory/latest/install.html l Tomcat 6 6.2 目錄結(jié)構(gòu) 下載和解壓artifactory。目錄結(jié)構(gòu)如下: 這些目錄是:l bac

11、kup 倉(cāng)庫(kù)的備份,可以使用cron表達(dá)式設(shè)置備份策略,quartz定時(shí)調(diào)度程序在指定的時(shí)間里運(yùn)行備份任務(wù),備份時(shí)間間隔在ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml文件中指定 l bin 內(nèi)置jetty 服務(wù)器的運(yùn)行批處理文件 l data 包含derby數(shù)據(jù)庫(kù)文件,如果你想以一個(gè)空的構(gòu)件庫(kù)開(kāi)始,可以刪除這個(gè)目錄中的所有內(nèi)容,在全新的artifactory 安裝中,這個(gè)目錄是空的。 l etc artifactory 的配置文件,有artifactory.config.xml 、jetty.xml 和log4j.

12、,properties l lib 包含所有依賴的jar文件 l logs 日志文件l webapps 包含war文件,它可以被拷貝到Tomcat中安裝。6.2 在Tomcat 6中部署 部署<ARTIFACTORY_INSTALLATION_FOLDER>/webapp目錄中的war文件到 <TOMCAT_INSTALLATION_FOLDER>/webapps目錄中,在jdk1.6和Tomcat 6環(huán)境下不需要改變tomcat的配置,Tomcat 6會(huì)檢測(cè)并部署它。當(dāng)這個(gè)Web應(yīng)用程序被部署的時(shí)候,需要這些信息:l 保存構(gòu)件的數(shù)據(jù)庫(kù)的位置 l artifactory

13、 的xml配置文件的位置 l 備份目錄的位置 可以在一個(gè)配置文件中指定所有3個(gè)信息,在Tomcat啟動(dòng)期間我們只需要指定artifactory的安裝目錄,artifactory會(huì)計(jì)算出其余的信息??蛇x的方法是使用jdbc設(shè)置好derby數(shù)據(jù)庫(kù)的連接并且在Web應(yīng)用程序中配置好artifactory (通過(guò)在Web應(yīng)用程序中包含artifactory.config.xml文件)。不管怎樣,這個(gè)方法是簡(jiǎn)單的。artifactory 安裝目錄的位置可以被設(shè)置為一個(gè)環(huán)境變量,在Linux中,用.bash來(lái)輸出artifactory 安裝目錄的位置的腳本是:export JAVA_OPTS = -Dar

14、tifactory.home=/home/amangat/artifactory-1.2.1-rc1在Windows中,可以添加到Tomcat啟動(dòng)選項(xiàng)中:6.3 設(shè)置Maven倉(cāng)庫(kù) 建議的方法是在我們的Maven倉(cāng)庫(kù)中創(chuàng)建3個(gè)庫(kù)(或子庫(kù)),它們是:l 內(nèi)部私有倉(cāng)庫(kù)private-internal-repository:這個(gè)倉(cāng)庫(kù)包含僅在團(tuán)隊(duì)內(nèi)使用的構(gòu)件,它們由開(kāi)發(fā)者手動(dòng)上傳,這個(gè)倉(cāng)庫(kù)不與ibiblio 中的遠(yuǎn)程倉(cāng)庫(kù)同步,因?yàn)檫@個(gè)倉(cāng)庫(kù)(或子倉(cāng)庫(kù))中的構(gòu)件是團(tuán)隊(duì)私有的。 l 第三方庫(kù)3rd-party:這個(gè)倉(cāng)庫(kù)包含公有的但不在ibiblio服務(wù)器上的構(gòu)件,例如,最新版本的尚不在ibiblio的組件或

15、jdbc驅(qū)動(dòng)。這個(gè)倉(cāng)庫(kù)不與ibiblio 同步,因?yàn)閕biblio 沒(méi)有這些jar。 l Ibiblio 緩存Ibiblio-cache:這個(gè)倉(cāng)庫(kù)與ibiblio 倉(cāng)庫(kù)同步,它是ibiblio 上的構(gòu)件的緩存。 設(shè)置這三個(gè)倉(cāng)庫(kù),需要修改<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml中的配置:<config xmlns:xsi="/2001/XMLSchema-instance" xmlns="http:/artifactory.jfrog.o

16、rg/xsd/1.0.0" xsi:schemaLocation="/xsd/1.0.0 /xsd/artifactory-v1_0_0.xsd"> <!- Backup every 12 hours -> <!-<backupCronExp>0 0 /12 * * ?</backupCronExp>-> <localRepositories> <localRepository> <key&

17、gt;private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</handleReleases> <handleSnapshots>true</handleSnapshots> </localRepository> <localRepository> <key>3rd-party</key> <de

18、scription>3rd party jars added manually</description> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> </localRepository> </localRepositories> <remoteRepositories> <remoteRepository> <key>ibiblio</key>

19、 <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> <excludesPattern>org/artifactory/*,org/jfrog/*</excludesPattern> <url>/maven2</url> </remoteRepository> </remoteRepositories></config>

20、;啟動(dòng)Tomcat并且輸入 http:/localhost:8080/artifactor下面是artifactory的首頁(yè)面:以用戶名admin和密碼password登錄,點(diǎn)擊瀏覽倉(cāng)庫(kù)的鏈接,你可以查看倉(cāng)庫(kù)的內(nèi)容。7.配置Maven以使用新的倉(cāng)庫(kù)7.1 配置Maven的settings.xml 文件Maven使用位于/.m2/settings.xml目錄的settings.xml文件來(lái)獲取Maven倉(cāng)庫(kù) ,如果沒(méi)有在該文件中指定倉(cāng)庫(kù),Maven默認(rèn)使用上的倉(cāng)庫(kù), settings.xml文件必須被修改以使用新的倉(cāng)庫(kù):<profiles> <profil

21、e> <id>dev</id> <properties> <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home> </properties> <repositories> <repository> <id>central</id> <url>http:/localhost:8080/artifactory/repo</url> <snapshots&g

22、t; <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http:/localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories&

23、gt; <pluginRepositories> <pluginRepository> <id>central</id> <url>http:/localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id>

24、; <url>http:/localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories> </profile></profiles>7.2 使用pom.xml配置Maven 也可以在項(xiàng)目的pom.xml文件中設(shè)置倉(cāng)庫(kù),下面是pom.xml范例文件:<project xmlns=&q

25、uot;/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artif

26、actId>test</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>test</name><url></url> <repositories> <repository> <id>central</id> <url>http:/localhost:8080/artifactory

27、/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http:/localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </

28、repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http:/localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository&

29、gt; <id>snapshots</id> <url>http:/localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories><dependencies> <dependency> <groupId>junit</groupId> &l

30、t;artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency></dependencies></project>7.3 使用Maven構(gòu)件倉(cāng)庫(kù)構(gòu)建項(xiàng)目 在構(gòu)建Maven項(xiàng)目的時(shí)候,所有的構(gòu)件庫(kù)都會(huì)從新的倉(cāng)庫(kù)下載,控件臺(tái)會(huì)顯示下載的過(guò)程:用瀏覽器登錄到新的構(gòu)件倉(cāng)庫(kù),你會(huì)發(fā)現(xiàn)artifactory 已經(jīng)下載并緩存了ibiblio上的構(gòu)件。7.4 安裝構(gòu)件到構(gòu)件倉(cāng)庫(kù) 可以通過(guò)Web界

31、面或Maven命令行安裝構(gòu)件,通過(guò)Web界面來(lái)安裝更簡(jiǎn)單更快,并且不需要修改任何配置。通過(guò)命令行安裝需要修改settings.xml配置文件,可以在其他腳本中使用。7.4.1 通過(guò)Web界面安裝構(gòu)件安裝步驟如下:1. 上傳要部署的構(gòu)件(jar 文件 或 pom 文件)2. 如果你上傳的是jar文件,Artifactory會(huì)為它創(chuàng)建pom文件 。上傳的時(shí)候你可以指定上傳到哪個(gè)倉(cāng)庫(kù)。3. 上傳完后,上傳的構(gòu)件與artifactory 自動(dòng)創(chuàng)建的pom文件一起在倉(cāng)庫(kù)中出現(xiàn)。7.4.1 能過(guò)Maven命令行安裝構(gòu)件當(dāng)用mvn clean install 命令的時(shí)候,Maven僅僅打包和安裝構(gòu)件到本地倉(cāng)

32、庫(kù),要把它安裝到APH內(nèi)部倉(cāng)庫(kù)中,我們必須在settings.xml中添加一條額外的配置:<settings> <servers> <server> <id>organisation-internal</id> <username>admin</username> <password>password</password> </server> </servers></settings>安裝構(gòu)件到內(nèi)部Maven倉(cāng)庫(kù)的命令是:mvn deploy:depl

33、oy-file -DrepositoryId=organisation-internal -Durl=http:/localhost:8080/artifactory/private-internal-repository-DgroupId=test -DartifactId=test -Dversion=1.1 -Dpackaging=jar -Dfile=target/test-1.1.jarrepositoryId必須與settings.xml中定義的服務(wù)器ID相匹配,url必須包含構(gòu)件將要被安裝到的倉(cāng)庫(kù)的名稱。新的構(gòu)件會(huì)在倉(cāng)庫(kù)中出現(xiàn),并且artifactory 會(huì)自動(dòng)為我們創(chuàng)建pom文

34、件。8. Artifactory 的其他特性8.1 備份構(gòu)件倉(cāng)庫(kù) 備份策略在 <ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml中指定,使用cron表達(dá)式來(lái)指定定時(shí)備份任務(wù),配置備份任務(wù)的元素在下面的代碼清單中用高亮顯示出來(lái)了<config xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xsd/1.0.0" xsi:schemaLocati

35、on="/xsd/1.0.0 /xsd/artifactory-v1_0_0.xsd"> <!- Backup every 12 hours -> <backupCronExp>0 0 /12 * * ?</backupCronExp> <localRepositories> <localRepository> <key>private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</han

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論