Mac下使用Nexus搭建Maven私服

  • 安裝nexus

    1.下載

      咱們能夠在nexus的官網上找到它的相關介紹,下載地址是http://www.sonatype.org/nexus/go,在這裏能夠找到最新的版本,若是須要之前的版本,在這裏也能夠找到下載地址。Nexus提供了兩種安裝方式,一種是內嵌Jetty的bundle,只要你有JRE就能直接運行。第二種方式是WAR,你只須簡單的將其發佈到web容器中便可使用。爲了方便就直接選用bundle版本。我下載的是:nexus-2.2-bundle.tar.gzlinux

    2.安裝

    在指定的目錄解壓下載的文件。解壓後會看到兩個文件夾,分別是nexus-2.2-01和sonatype-work,前者包含了nexus的運行環境和應用程序,後者包含了你本身的配置和存儲構件的地方。nexus-2.2-01/conf/nexus.properties中能夠修改端口信息以及工做區的路徑。web

    3.啓動nexus

    進入nexus-2.2-01/bin/jsw/目錄,而後根據OS的版本進入相應的目錄,在linux下,運行./nexus start即啓動了服務,直接運行./nexus會看到提示信息,運行./nexus console 能夠以控制檯方式啓動nexus,方便咱們觀察啓動時的相關工做。neuxs默認監聽端口是8081,此時在瀏覽器中運行訪問http://127.0.0.1:8081/nexus或者http://localhost:8081/nexus或者http://0.0.0.0:8081/nexus應該能夠看到neuxs的界面。瀏覽器

  • 配置nexus

    新搭建的neuxs環境只是一個空的倉庫,須要手動和遠程中心庫進行同步,nexus默認是關閉遠程索引下載,最重要的一件事情就是開啓遠程索引下載。登錄nexus系統,默認用戶名密碼爲admin/admin123。 點擊左邊Views/Repositories菜單下面的Repositories,找到右邊倉庫列表中的三個倉庫Apache SnapshotsCodehaus SnapshotsCentral,而後再沒有倉庫的Configuration下把Download Remote Indexes修改成true。而後在這三個倉庫上分別右鍵,選擇Repari Index,這樣Nexus就會去下載遠程的索引文件。緩存

    新建公司的內部倉庫,步驟爲Repositories –> Add –> Hosted Repository,在頁面的下半部分輸入框中填入Repository ID和Repository Name便可,好比分別填入myrepo和 my repository,另外把Deployment Policy設置爲Allow Redeploy,點擊save就建立完成了。maven

    修改nexus倉庫組url

    Nexus中倉庫組的概念是Maven沒有的,在Maven看來,無論你是hosted也好,proxy也好,或者group也好,對我都是同樣的,我只管根據groupId,artifactId,version等信息向你要構件。爲了方便Maven的配置,Nexus可以將多個倉庫,hosted或者proxy合併成一個group,這樣,Maven只須要依賴於一個group,便能使用全部該group包含的倉庫的內容。spa

    neuxs-2.2中默認自帶了一個名爲「Public Repositories」組,點擊該組能夠對他保護的倉庫進行調整,把剛纔創建的公司內部倉庫加入其中,這樣就不須要再在maven中明確指定內部倉庫的地址了。同時建立一個Group ID爲public-snapshots、Group Name爲Public Snapshots Repositories的組,把Apache Snapshots、Codehaus Snapshots和Snapshots加入其中。插件

    到這裏neuxs的安裝配置就完成了,下面介紹如何在mavne中使用本身的私服。code

    maven安裝好默認是沒有配置倉庫信息,此時mavne都默認去遠程的中心倉庫下載所依賴的構件。既然使用了私服,就須要明確告訴maven去哪裏下載構件,能夠在三個地方進行配置,分別是是mavne的安裝目錄下的conf下的settings.xml文件,這個全局配置,再一個是在userprofile/.m2目錄下的settings.xml,若是不存在該文件,能夠複製conf下settings.xml,這個是針對當前用戶的,還有一個是在pom.xml中指定,其只對該項目有效,三個文件的優先級是pom.xml大於.m2,.m2大於conf下。xml

    settings.xml的配置以下:

    在profiles段增長一個profile

 <profile>
      <id>nexus</id>
      <repositories>
        <repository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
            <id>nexus-snapshots</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public-snapshots</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>nexus-snapshots</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public-snapshots</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
       </pluginRepositories>
    </profile>


    上述的id,name能夠根據本身的喜愛來定義,保證多個repository的id不重複便可,主要是url的配置,能夠在nexus的repositories列表中找到對應的url,就是repositories的Repository Path,剛纔咱們已經在neuxs中定於了倉庫組,這裏就取對應組的Repository Path信息便可。

    另外,倉庫是兩種主要構件的家。第一種構件被用做其它構件的依賴。這是中央倉庫中存儲的大部分構件類型。另一種構件類型是插件。若是不配置pluginRepositories,那麼執行maven動做時,仍是會看到去遠程中心庫下載須要的插件構件,因此這裏必定要加上這個。

    在settings.xml中指使配置了profile還不行,須要激活它,在activeProfiles段,增長以下配置:

<activeProfile>nexus</activeProfile>

    此處activeProfile中的內容就上面定義profile的id。
    pom.xml配置以下:

<repositories>
        <repository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>nexus-snapshots</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public-snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>nexus-snapshots</id>
            <name>local private nexus</name>
            <url>http://192.168.1.68:8081/nexus/content/groups/public-snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>


    其中id,name都無所謂,關鍵不能把url弄錯。

    有了上述配置,當在項目執行maven操做時,若是本地庫中沒有依賴的構件,maven會去私服下載,若是私服也沒有,私服會去遠程中心庫下載,同時會在私服的本地緩存,這樣若是第二我的再要用到這個構件,私服就直接提供下載。

相關文章
相關標籤/搜索