2012-08-10 80 views
0

我的任務是編寫與Nexus/Maven交互的腳本。我在Maven中使用的文件是放置在那裏的XML文件,它們將被shell腳本使用。基本上,這些文件是另一個應用程序的配置。mvn與依賴關係相反:get?如何設置授權?

我已經完成了從存儲庫中提取文件的腳本,但我在將文件放入存儲庫時遇到問題。爲了拉取文件,我使用插件依賴項:get。

我需要的是或多或少與該插件相反。一個將用新版本的文件更新存儲庫。我認爲「mvn deploy:deploy-file」是我需要使用的。這會工作嗎?

如果是這樣,那麼我的下一個問題是,我似乎無法弄清楚如何設置授權。我有一個定義了服務器的設置文件,其中包含正確的授權信息,但服務器和存儲庫(或URL?)之間的鏈接缺失,授權未正確執行。

如何將repository URL連接到settings.xml文件中的服務器信息,以便mvn被授權執行正確的操作? (我不知道在哪裏.pom文件是Maven的,並且可能沒有權限來改變它。)

感謝,

肖恩。

回答

0

問題原來是在-Durl選項。

當使用依賴性:獲得插件,網址是這樣的:

-Durl=http://companymavenrepo 

這對於依賴插件的正常工作。

但是,嘗試使用deploy插件將內容放入存儲庫時,這還不夠。 URL必須包含maven服務器以及放置工件的確切位置。 (我的術語可能會關閉)我去了我們的Nexus/Sonatype的網頁,看着存儲已神器的確切資料庫,然後使用這樣的事情:

-Durl=http://companymavenrepo/nexus/content/repositories/this_maven_repo 

就解決授權問題,我是能夠將文件添加到存儲庫中而沒有問題。如果我發佈了兩條mvn命令行,我試圖使用它們,這對其他人來說可能更容易。另一方面,當您在一個特定值中使用-Durl選項時,這似乎也是合理的命令行,它的工作原理是它將在另一個命令行中保持不變。)

肖恩。

0

deploy:deploy-file是正確的。與-Durl=http://repo:port/path,-DrepositoryId=server-whatever一起使用。你settings.xml需要包含

<servers> 
    <server> 
     <id>server-whatever</id> 
     <username>demo</username> 
     <password>demo</password> 
    </server> 
    </servers> 

所在服務器ID server-whateverrepositoryId參數相匹配。

話雖如此,我會質疑Maven對此的適當性。它專爲二元artifaccts而不是配置。

+0

壞消息是我事前已經做好了。這裏是我的mvn調用:mvn -s /settings.xml deploy:deploy-file -Durl = http:// mymavenrepo/-DrepositoryId = myrepoid -DgroupId = groud-id -DartifactId = filename.xml -Dversion = 1.0.2 - Dpackaging = xml -Dfile = filename.xml。 – Sean 2012-08-13 13:40:18

+0

我的服務器部分幾乎和您的建議一樣,其中repositoryId與命令行中定義的一樣。服務器部分的不同之處在於增加了'文件權限'和'目錄權限'。但是我仍然收到認證錯誤。有任何想法嗎? – Sean 2012-08-13 13:46:44

+0

你可以使用Wireshark來嗅探HTTP流量嗎? – artbristol 2012-08-13 13:54:53