1. 程式人生 > >maven上傳Jar包到私服及從私服下載jar包相關配置

maven上傳Jar包到私服及從私服下載jar包相關配置

有關使用Maven常見問題總結(Eclipse中使用Maven、Maven專案部署到tomcat等問題)

http://blog.csdn.net/sunitjy/article/details/42709311

****************************************************

 

最近一些專案需要讓Maven來管理,一種情況是將之前的eclipse的Java Project專案和Web project 加入Maven管理,還有一種情況是,將SVN上的Maven專案拉到本地,在eclipse中使用時遇到的一些棘手問題,問題過程和解決具體方案如下:

1.在eclipse中安裝maven外掛後啟動eclipse時,會遇到如下警告:

The Maven Integration requires that Eclipse be running in a JDK, because a number of Maven core plugins are using jars from the JDK

Please make sure the -vm option in eclipse.ini is pointing to a JDK and verify that Installed JRE’s are also using JDK installs.

2.使用maven外掛在eclipse中編譯或者Maven Install時有時會出現會出現如下問題:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project springside-core: Compilation failure

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

以上兩個問題解決方法如下:

(1)set your JDK as a default Java environment in eclipse (default installed JRE)

Open eclipse. Click on ‘Window’ -> ‘Preferences’ -> ‘Java’ -> ‘Installed JREs’.

If you can’t find any JDK on the list -> click ‘Add’ -> ‘Standard VM’ -> set all paths and click ‘Finish’.

After that – check this JDK on the list of installed JREs and click ‘OK’.

有時採取第(1)種方案並不能有效解決問題,還需要如下處理:

(2)add path to your SDK in eclipse.ini

open ‘eclipse.ini’ and add there: -vm path_to_javaw_on_your_machine,so in my example it will be (jdk1.6.0_17 on Windows):

-vm
D:\\Java\jdk1.6.0_13\jre\bin\javaw

your ‘eclipse.ini’ looks like this:

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m

-vm
D:\Java\jdk1.6.0_13\jre\bin\javaw
-vmargs
-Xms40m

-Xmx256m

注:‘-vm’ must be  "-vmargs" above

3.使用Maven,經常會自己搭建nexus私服,具體步驟如下:

建立私服的優點:

 (1) 降低中央倉庫負荷

 (2) 節省外網頻寬

 (3) 加速Maven構建

 (4) 自己部署構件

1). Nexus安裝

    (1) 下載:http://www.sonatype.org/nexus/,下載包:nexus-2.0.2.war

    (2) 安裝

         A. WAR方式安裝Nexus

         將nexus-2.0.2.war拷貝至Tomcat的部署目錄:C:\Apache-tomcat-7.0.26\webapps下,

         啟動Tomcat, 進入Tomcat管理首頁即可;

         瀏覽器訪問地址:http://localhost:8080/nexus

         B. Bundle方式安裝Nexus

         因為Bundle方式的Nexus預設集成了Jetty容器,因此不需要其他第三方Web容器,解壓下載的Bundle

         方式的Nexus檔案,有下面的兩個目錄:

         nexus-webapp-2.0.2:包含Nexus所需要的檔案,如啟動指令碼,依賴JAR等。

         sonatype-work:包含Nexus生成的配置檔案、日誌檔案、倉庫檔案。

         WinOS下,進入nexus-webapp-2.0.2/bin/jsw/windows-x86-32執行nexus.bat指令碼啟動服務。

         瀏覽器訪問地址:http://localhost:8081/nexus

         備註:

         更改訪問埠:修改nexus-webapp-2.0.2/conf/plexus.properties

    (3) 登入

         Nexus預設的管理員及密碼:admin/admin123

2). Nexus的倉庫與倉庫組

    Nexus有四種倉庫型別:group,hosted,proxy,virtual,倉庫格式為:maven2或maven1,倉庫屬性Policy為:Release或Snapshot.

3.設定本地Maven庫步驟和在eclipse中使用Maven遇到的一些問題及解決方案如下:

以下是在D:\Java\apache-maven-3.0.1\conf的settings.xml檔案中配置,maven的settings.xml是全域性設定,下面會在eclipse中使用該自定義的maven:

1).設定本地Maven庫地址:

<localRepository>D:/Java/maven_repository</localRepository>

2).建立nexus私服後,設定訪問伺服器的賬號和密碼:

    <server>
        <id>nexus-releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>

3).有關在settings.xml配置映象

簡單講一下為什麼我們需要配置映象,如果不配置映象,你會發現maven預設從http://repo1.maven.org/maven2地址去下載的,這是為什麼呢?

原因如下:在D:\Java\apache-maven-3.0.1\lib\maven-model-builder-3.0.1.jar的jar包你會發現有個maven-model-builder-3.0.1.jar\org\apache\maven\model\pom-4.0.0.xml檔案,裡面指定了如下配置

  <repositories>
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

如果讓我們本機的Maven只使用私服,即覆蓋如上中央倉庫的預設地址,則需要配置如下映象:

    <mirror>
        <id>Mirror</id>

       <!--如果想為所有的倉庫做映象那麼這裡加*-->
        <mirrorOf>*</mirrorOf>
        <name>Mirror</name>
        <url>http://172.16.101.17:8081/nexus/content/groups/public/</url>
    </mirror>

4).在settings.xml配置獲取依賴包和外掛如下:

     <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>nexus</id>
                <name>Nexus</name>
                <url>http://172.16.101.17:8081/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>nexus</id>
                <name>Nexus</name>
                <url>http://172.16.101.17:8081/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>

5).在eclipse中配置上面自定義的的maven,如下圖:

file:///C:/Users/kfuser/Desktop/m1.bmp

 

file:///C:/Users/kfuser/Desktop/m2.bmp

6).eclipse中的專案更新依賴的jar包和系統Maven配置方法如下圖:

file:///C:/Users/kfuser/Desktop/m3.bmp

7).下面的配置可以在每個專案的pom檔案中設定,目的是將本地專案使用Maven部署構件至Nexus庫中:

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Releases Repository</name>
            <url>http://172.16.101.17:8081/nexus/content/repositories/releases/</url>
        </repository>

        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshots Repository</name>
            <url>http://172.16.101.17:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

4.下面的問題是個比較重要的問題,也提供解決方法:

    我向來喜歡用簡單的工具,因為開發效率高的同時,除錯和查問題也會變得很簡單,如果我們平時使用myeclipse作為開發工具來,會習慣使用它自帶的整合tomcat工具,版本低的eclipse只能配置tomcat6,不能配置tomcat7等高版本,其實這個也是有解決方法的,後面再說。

    如果我們使用maven這個外掛來開發,部分人會使用jetty外掛或者tomcat外掛來部署應用,如果部署的應用有一些問題,比如:我們有時會需要到web容器中查詢有沒有部署成功等等,如果此時使用外掛,可能有點不方便,這時候就會覺得myeclipse自帶的整合tomcat環境有很大用處,但是這裡會存在一個部署問題如下圖:

file:///C:/Users/kfuser/Desktop/m4.bmp

按照maven的結構,編譯之後的程式碼都是預設放在${project_name}/target/classes下的,但是你部署到tomcat的路徑是如下圖:

file:///C:/Users/kfuser/Desktop/m5.bmp

這樣就會存在一個問題,如果你修改的工程程式碼,工程程式碼不會實時更新到web容器中,至於什麼原因,大家通過比較上面兩張圖應該能看出,所以我們要解決這些預設問題,解決問題如下:

file:///C:/Users/kfuser/Desktop/m6.bmp

即將${project_name}/target/classes改為${project_name}/src/main/webapp/WEB-INF/classes即可,注意圖中編譯之後的class檔案存放路徑等細節。

5.有時我們在使用Maven命令做編譯或者Maven Install時,可能需要跳過TestCase檢驗,方案如下:

1.在pom.xml檔案中,追加如下外掛
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12.4</version>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
   </plugin>

2.或者在使用mvn install命令的時候,加上如下引數:

mvn install -D maven.test.skip=true    注:加了則跳過TestCase檢驗,否則在install時會執行TestCase測試