John Jiang

          a cup of Java, cheers!
          https://github.com/johnshajiang/blog

             :: 首頁 ::  :: 聯系 :: 聚合  :: 管理 ::
            131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
          Maven Weed
          學習、使用Maven的過程中,親身遇到或看到的一些問題的解決方法。Maven有不少Bug,大家使用時一定要小心。(2007.02.10最后更新)

          向本地倉庫安裝文件
              mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
          -DgeneratePom=true -DcreateChecksum=true(需要使用maven-install-plugin 2.2-SNAPSHOT)

          打包時,不在META-INF中生成maven目錄
              使用Maven打包(mvn package)時,默認地會在META-INF中生成一個目錄maven,里面是一個pom和一個屬性文件。如果不想生成這個目錄,需要在POM中進行如下配置:
          以對于一般應用程序打包,即制作jar包為例
          <build>
           
          <plugins>
             
          <plugin>
               
          <groupId>org.apache.maven.plugins</groupId>
               
          <artifactId>maven-jar-plugin</artifactId>
               
          <configuration>
                 
          <archive>
                   
          <addMavenDescriptor>false</addMavenDescriptor>
                 
          </archive>
               
          </configuration>
             
          </plugin>
           
          </plugins>
          </build>
          如果你在打jar包(mvn package)時,報如下錯誤:
          [INFO] Failed to configure plugin parameters for: org.apache.maven.plugins:maven-jar-plugin:2.0
          Cause: Cannot find setter nor field in org.apache.maven.archiver.MavenArchiveConfiguration  for 'addMavenDescriptor' 
          這是由于maven-jar-plugin的版本不夠高(很可能是2.0版本),需要升級到最新的2.1版本。運行命令mvn -U package,會先下載最新版本,再執行打包操作。
              類似的,對于制作war,ear包,只需要將artifactId換成對應的plugin(
          maven-war-plugin maven-ear-plugin )就可以了。

          Javadoc中文亂碼
              中文操作系統中,JDK1.5.0的Javadoc自動默認支持中文,而且頁面中的條目名也都默認為中文顯示(在之前的JDK中,這些條目名都默認為英文)。
          如是在這種情況下使用命令mvn javadoc:javadoc生成Javadoc,則這些條目名將成為亂碼。
              解決方法:讓javadoc插件使用UTF16或Unicode字符集。具體配置的形式如下:
          <build>
           
          <plugins>
             
          <plugin>
                
          <groupId>org.apache.maven.plugins</groupId>
                
          <artifactId>maven-javadoc-plugin</artifactId>
                
          <configuration>
                  
          <charset>UTF16</charset>
                
          </configuration>
              
          </plugin>
           
          </plugins>
          </build>

          Scope
          Scope表示了某個依賴關系的適用范圍(作用域),共有5個scope。
          compile: 默認的適用范圍,表示該依賴關系要應用于所有的classpath。
          provided: 該適用范圍非常像compile適用范圍。但它表示該依賴關系已經由JDK或某個容量提供,如javax.servlet。
          runtime:表示該依賴關系不用于編譯階段,而只使用于運行時階段,如apache jakarta commons。
          test:表示該依賴關系并不用于實際的應用程序本身,而是該應用的測試程序的編譯與運行,如junit。
          system:該依賴關系類似于provided,但必須顯示地表示是哪一個容器提供了這個artifact。無法在倉庫中找到該artifact。
          注意:
          [1]具有compile或runtime適用范圍的依賴關系中的jar文件,制作war文件時將會被放入WEB-INF/lib目錄中。
          [2]不推薦使用system適用范圍。

          將mvn.bat配置為Eclipse外部工具
          為了能夠在Eclipse環境中運行mvn.bat,需要將它配置為一個外部工具(external tool)。在我的Eclipse Weed(配置外部工具)一文中已經提到了如何配置Eclipse External Tools(可先參見該文)。本主題將具體講述如何將mvn.bat的package Build周期短語配置為外部工具。
          [1]主菜單Run-->External Tools-->External Tools...
          [2]先選中Program項,再點擊左上角的New launch configuration按鈕
          [3]Name文本框中輸入該外部工具的名稱“MvnPackage”
          [4]通過Browser File System...按鈕,向Location文本框中輸入mvn.bat文件的絕對路徑
          [5]通過Variables...按鈕,選擇project_loc,將向Working Directory文本框中輸入${project_loc}
          [6]在Augments文本域中輸入package
          這樣當你選中一個pom.xml文件后,再運行該外部工具,就相當于對該POM文件文件執行mvn package命令。

          制作war文件時,過濾文件
          使用maven-war-plugin制作war文件時,它會先將所有可能用于制作war的內容放入target/artifactId-version目錄(標準目錄結構)下,然后再將這些文件進行打包。這樣就有兩種方法進行文件過濾:[1]使期望被過濾的文件一開始就不被放入
          target/artifactId-version目錄,即使它成為不可能的文件;[2]在制作war文件時,不將期望被過濾的文件加入包中。
          [1]實現第一種方法,要對dependency進行配置。將不希望加入包的artifact放入exclusion參數中,如下腳本所示:
          <dependency>
              
          <groupId>commons-configuration</groupId>
              
          <artifactId>commons-configuration</artifactId>
              
          <exclusions>
                  
          <exclusion>
                      
          <groupId>dom4j</groupId>
                      
          <artifactId>dom4j</artifactId>
                  
          </exclusion>
              
          </exclusions>
          </dependency>
          [2]實現第二種方法,要對maven-war-plugin進行配置,將
          不希望加入包的資源文件(不再稱之為artifact)放入warSourceExcludes參數中,如下腳本所示:
          <build>
              
          <plugins>
                  
          <plugin>
                      
          <groupId>org.apache.maven.plugins</groupId>
                      
          <artifactId>maven-war-plugin</artifactId>
                      
          <version>2.0.1</version>
                      
          <configuration>
                          
          <warSourceExcludes>WEB-INF/lib/dom4j-1.4.jar</warSourceExcludes>
                      
          </configuration>
                  
          </plugin>
              
          </plugins>
          </build>
          注意:上述方法都不僅僅是過濾掉dom4j的jar文件,它還會過濾掉dom4j所依賴的其它文件(artifact)。

          當加載插件時拋NullPointerException
          如果倉庫中有某個插件的jar文件有問題,則會拋出這樣的異常。遇到這樣的問題時,必須將這個有問題的插件清除。
          可以在執行參數中加上-X(如mvn -X compile)來獲得加載插件的過程,從中可能會發現問題插件。如果還不行,則使用一個新的倉庫,再次執行工程。

          Install或Deploy源代碼
          <project>
              <build>
                  <plugins>
                      <plugin>
                          <inherited>true</inherited>
                          <groupId>org.apache.maven.plugins</groupId>
                          <artifactId>maven-source-plugin</artifactId>
                          <executions>
                              <execution>
                                  <id>attach-sources</id>
                                  <goals>
                                      <goal>jar</goal>
                                  </goals>
                              </execution>
                          </executions>
                      </plugin>
                  </plugins>
              </build>
          </project>
          使用如上的腳本即可,但該腳本只能針對jar文件,而不能針對war或ear...文件。maven-source-plugin并沒有提供install或deploy Web工程源代碼的goal。

          在命令行中設置本地倉庫
          在使用Maven2命令(mvn)時,可以設置本地倉庫的路徑,該路徑將會替代settings.xml中設置的本地倉庫路徑。
          如命令,mvn -Dmaven.repo.local=Another_Local_Repo package
          注:在Maven1中還可以通過-Dmaven.repo.remote設置遠程倉庫,但目前在Maven2中還不行。

          在Maven發行包中找到Super POM文件
          所有的POM都默認繼承Super POM,該POM定義了Maven標準目錄結構。但在Maven的發行包中,這個Super POM是存放在了哪里呢?
          這個POM就存放在maven-project的jar文件中。在筆者的機器中,該Super POM的位置是:
          Maven_Home/lib/maven-project-2.0.4.jar/org/apache/maven/project/pom-4.0.0.xml

          構建Maven遠程倉庫
          構建Maven遠程倉庫的方法很多,也很簡單。常用的Web服務器(Apache,JBoss,Tomcat,...)都可以用于構建Maven遠程倉庫;而發布artifact時,也可以使用多種協議(FTP,SFTP,SSH,...)。
          此處使用RedHat AS 4.0 + Apache2.0.59,并應用SSH協議向遠程倉庫發布artifact。
          [1]在Apache的DocumnetRoot中新建目錄maven2/repo,此處該目錄的絕對路徑為
          /usr/local/apache2/htdocs/maven2/repo
          [2]在本地Maven的settings.xml文件中設置Server,語句的形式如下:
          <servers>
            <server>
              <id>myrepo</id>
              <username>myuser</username>
              <password>mypasswd</password>
            </server>
          </servers>
          myuser/mypasswd是登錄遠程Linux系統時使用的用戶名/密碼。
          [3]在本地工程的pom.xml中進行如下形式的設置:
          <distributionManagement>
              <repository>
                  <id>myrepo</id>
                  <url>scp://Host/usr/local/apache2/htdocs/maven2/repo</url>
              </repository>
          </distributionManagement>
          此處id必須與前面設置的server中的id一致;scp是使用SSH協議的文件傳輸命令;Host是遠程Linux服務器的IP地址或域名;/usr/local/apache2/htdocs/maven2/repo就是Maven倉庫在遠程服務器中的絕對路徑。
          [4]在本地中使用命令mvn deploy發布artifact到遠程倉庫中。
          [5]
          啟動Apache服務器, 通過地址http://Host/maven2/repo,就可以看到剛剛發布artifact了。

          updating...
          posted on 2006-09-11 13:37 John Jiang 閱讀(6669) 評論(34)  編輯  收藏 所屬分類: Maven

          評論

          # re: Maven + Continuum Weed 2006-12-04 14:41 zhengoodman
          不好意思,弱弱的問一下。我想把web程序部署到tomcat下,要用到什么插件,如何才能下載這個插件?
          我看http://mirrors.ibiblio.org/pub/mirrors/maven2/plugins/org/apache/maven/plugins/maven-deploy-plugin/2.0-alpha-3/
          下面有maven-deploy-plugin-2.0-alpha-3.jar包。
          http://mirrors.ibiblio.org/pub/mirrors/maven2/maven/maven-deploy-plugin/下面有maven-deploy-plugin.jar的1.3版本。不知應該下載哪個?pom文件應該怎么寫?把他自帶的pom文件的內容拷過來就行嗎?  回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-04 20:24 Sha Jiang
          這個deploy插件是向Maven遠程共享倉庫發布artifact時使用的,與Web/App Server沒什么特別的關系。
          再說使用插件時,只需要在pom.xml中進行聲明,不需要自己直接下載。Maven會自動下載Central Repository中存有的artifact(包括它們的pom.xml文件)。

          就如我的另一篇文章
          http://www.aygfsteel.com/jiangshachina/archive/2006/11/24/83331.html
          中所說的,想向JBoss部署Web應用,就需要使用針對JBoss的Maven插件。

          maven-tomcat-plugin也許是你想要的
          http://www.codeczar.com/products/maven-tomcat-plugin/
          但該插件似乎不在Maven中央倉庫中,但你可以在它的主頁中直接下載。
          Good Luck!

            回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-05 08:46 zhengoodman
          我自己也沒搞清楚。昨天問完后,看資料才知道deploy是干什么用的。有沒有好的講maven2的教程或網站,推薦一下啊。
          你寫的4篇關于maven的文章我都看過了。有的還看了好幾遍。哈哈。
          以后還請多多關照啊。  回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-06 11:23 Sha Jiang
          我的關于Maven的文章其實還比較簡單,上次說的一篇較復雜的文章也一直沒時間寫完。唉~~~
          不過,本周就準備寫完,哈哈~~~

          關于Maven2的好網站?
          只能是官方網站了,哈哈
          其實更好的地方是它的官方Mail List。你可以加入,然后在里面提問。
          我就是這樣的,不懂就問嘛。老外還是很熱心的,確實獲益良多。

          關于Maven2的好書?
          不得不推薦一下《Better Build with Maven》
          這本書是免費的,網上應該早就傳開了。
          它的官方獲取地址:http://www.mergere.com/m2book_download.jsp
          也可以下載到書中的源代碼,非常不錯 :D
            回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-07 10:21 zhengoodman
          非常感謝,你真熱心。  回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-07 10:32 zhengoodman
          不過你給的鏈接我訪問不了啊,連http://www.mergere.com這個網址都打不開。另外,你上次說的那個tomcat的插件我也下載不了啊(沒找到下載的地方,倒是看了一天的文檔)。你確定http://www.mergere.com現在還能訪問嗎?  回復  更多評論
            

          # re: Maven + Continuum Weed 2006-12-09 12:59 Sha Jiang
          > 你確定http://www.mergere.com現在還能訪問嗎
          我訪問mergere的站點是沒問題的。

          > 你上次說的那個tomcat的插件我也下載不了啊(沒找到下載的地方,倒是看了一天的文檔)。
          上次我只是簡單的搜索了一下,沒嘗試那個插件。
          今天在官方的Mail List中查了一下,發現那個插件已經更名,并且放在了codehause的mojo項目中了。
          http://mojo.codehaus.org/tomcat-maven-plugin/introduction.html
            回復  更多評論
            

          # re: Maven Weed 2007-01-08 09:42 fy
          請教個問題,我的web項目下有webapp和config兩個目錄,我想把config中的一個文件,打到webapp.war包的/WEB-INF/下,怎么辦呢?  回復  更多評論
            

          # re: Maven Weed 2007-01-08 17:52 Sha Jiang
          我以前也考慮過同樣的問題。
          但我這個人比較懶,就直接把這個文件放在webapp/WEB-INF目錄中 ^_^
          那么制作war文件后,它自然就會在正確的位置了。

          應該可以使用maven-assembly-plugin達到相同的目的。
          http://maven.apache.org/plugins/maven-assembly-plugin/  回復  更多評論
            

          # re: Maven Weed 2007-01-16 17:18 fy
          請教個問題,我用的是:eclipse:3.2.1,maven:2.0.4,org.maven.ide.eclipse:0.0.9.但是在eclipse中執行compile總是錯:
          INFO] ----------------------------------------------------------------------------
          [INFO] Building maven_itms Maven Webapp
          [INFO] task-segment: [compile]
          [INFO] ----------------------------------------------------------------------------
          [INFO] resources:resources
          [INFO] Using default encoding to copy filtered resources.
          [INFO] compiler:compile
          Compiling 132 source files to D:\workspace\maven_itms\target\classes
          [ERROR] mojo-execute : compiler:compile
          Diagnosis: Compilation failure
          FATAL ERROR: Error executing Maven for a project
          [ERROR] project-execute : com.novitech.itms:maven_itms:war:1.0 ( task-segment: [compile] )
          Diagnosis: Compilation failure
          FATAL ERROR: Error executing Maven for a project
          org.apache.maven.BuildFailureException: Compilation failure
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:555)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)
          at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:441)
          at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:382)
          at org.maven.ide.eclipse.Maven2Executor.main(Maven2Executor.java:68)
          Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
          at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:505)
          at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:111)
          at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)
          ... 8 more


          但是在cmd中就不會錯:D:\workspace\maven_itms>mvn compile
          [INFO] Scanning for projects...
          [INFO] ----------------------------------------------------------------------------
          [INFO] Building maven_itms Maven Webapp
          [INFO] task-segment: [compile]
          [INFO] ----------------------------------------------------------------------------
          [INFO] [resources:resources]
          [INFO] Using default encoding to copy filtered resources.
          [INFO] [compiler:compile]
          Compiling 132 source files to D:\workspace\maven_itms\target\classes
          [INFO] ------------------------------------------------------------------------
          [INFO] BUILD SUCCESSFUL
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 8 seconds
          [INFO] Finished at: Tue Jan 16 17:16:34 CST 2007
          [INFO] Final Memory: 4M/16M
          [INFO] ------------------------------------------------------------------------

          不知道該怎么辦?
            回復  更多評論
            

          # re: Maven Weed 2007-01-17 10:18 Sha Jiang
          關于你所提到的問題,我并沒遇到過。
          實際上,我沒使用Maven的Eclipse插件。
          如果你在CMD中執行命令mvn compile,沒有出現問題。那么就可能是Eclipse環境的問題。
          [1]使用什么版本的JDK
          [2]Eclipse與CMD使用的JRE是否相同?
          [3]在Eclipse中編譯Java源文件,是否沒有任何問題?設置了何種編譯器級別?

          如果沒有上述問題,你就不要使用Maven的Eclipse插件。
          而是將mvn命令直接配置為Eclipse的一個外部工具,然后使用該外部工具執行命令mvn compile。
          再看看還會出現什么情況。  回復  更多評論
            

          # re: Maven Weed 2007-01-17 11:28 fy
          我把maven設置成了外部工具,問題解決.謝謝!  回復  更多評論
            

          # re: Maven Weed 2007-01-17 12:47 Sha Jiang
          那就可能是這個Maven的Eclipse插件的問題了(至少可能是與你使用的Eclipse版本不兼容)。
          剛學習Maven時,也用過這個插件。但當時一方面對Maven不熟悉,一方面這個插件在Eclipse不能正常使用。
          后來就一直沒有再使用過任何一款Maven的Eclipse插件了。
          對于只是運行Maven命令而言,把mvn設置為Eclipse外部命令,應該是足夠用了。  回復  更多評論
            

          # re: Maven Weed 2007-01-18 09:58 fy
          Hello!
          請問,你知道maven在產生site的時候,能做成中文的嗎?我找了好久都沒看到有人提到這件事。  回復  更多評論
            

          # re: Maven Weed 2007-01-18 10:37 Sha Jiang
          這個問題我也沒考慮過。
          不過可以想像,Maven默認使用英文。而要生成中文頁面,肯定要把這些英文全部使用中文替換吧。
          做國際化的時候,不是經常使用多語言的資源文件嘛。
          但Maven可能沒提供這方面的接口 :(  回復  更多評論
            

          # re: Maven Weed 2007-04-20 14:53 Joeaniu
          maven調試的一個小tip: 不要一次定義過多的內容,從最簡單的pom.xml開始,一小塊一小塊的添加,以便定位問題。  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-19 16:52 新手
          Tests run: 128, Failures:[color="#FF0000"] 2, Errors[/color]: 0, Skipped: 0

          [color="#FF0000"][ERROR] mojo-execute : surefire:test[/color]
          Diagnosis: There are test failures.
          [color="#FF0000"]FATAL ERROR: Error executing Maven for a project[/color]
          [color="#FF0000"][ERROR] project-execute : L2Emu:l2j-gameserver:jar:1.0.0 ( task-segment: [assembly:assembly] (aggregator-style) )[/color]
          Diagnosis: There are test failures.
          [color="#FF0000"]FATAL ERROR: Error executing Maven for a project[/color]
          [color="#FF0000"][ERROR] reactor-execute : F:\L2jserver\L2Emu_GameServer[/color]
          Diagnosis: There are test failures.
          [color="#FF0000"]FATAL ERROR: Error executing Maven for a project[/color]
          [INFO] ------------------------------------------------------------------------
          [color="#FF0000"][ERROR] BUILD ERROR[/color]
          [INFO] ------------------------------------------------------------------------
          [INFO] There are test failures.
          [INFO] ------------------------------------------------------------------------
          [INFO] For more information, run Maven with the -e switch
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 2 minutes 52 seconds
          [INFO] Finished at: Wed Dec 19 08:08:25 GMT 2007
          [INFO] Final Memory: 9M/22M
          [INFO] ------------------------------------------------------------------------
          [color="#FF0000"][INFO] Error for project: Unnamed - L2Emu:l2j-gameserver:jar:1.0.0 (during org.apache.maven.plugins:maven-surefire-plugin:2.3:test)[/color]
          [INFO] ------------------------------------------------------------------------
          [INFO] There are test failures.
          [INFO] ------------------------------------------------------------------------
          [INFO] For more information, run Maven with the -e switch
          [INFO] ------------------------------------------------------------------------
          [ERROR] reactor-execute : F:\L2jserver\GameServer
          [color="#FF0000"]FATAL ERROR: Error executing Maven for a project[/color]
          [color="#FF0000"][INFO] BUILD ERRORS[/color]
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 2 minutes 52 seconds
          [INFO] Finished at: Wed Dec 19 08:08:25 GMT 2007
          [INFO] Final Memory: 9M/22M
          [INFO] ------------------------------------------------------------------------

          我要升成jar的包.但老是出錯..
          以前能用的.都沒動過什么東西.
          .就這兩天用不了
          Eclipse 我不太懂.問下這個是哪出錯了..要如何解決


            回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-19 16:55 新手
          [ERROR] mojo-execute : surefire:test
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project
          [ERROR] project-execute : L2Emu:l2j-gameserver:jar:1.0.0 ( task-segment: [assembly:assembly] (aggregator-style) )
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project
          [ERROR] reactor-execute : F:\L2jserver\L2Emu_GameServer_CT1
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project
          [INFO] ------------------------------------------------------------------------
          [ERROR] BUILD ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] There are test failures.
          [INFO] ------------------------------------------------------------------------
          [INFO] For more information, run Maven with the -e switch
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 2 minutes 52 seconds
          [INFO] Finished at: Wed Dec 19 08:08:25 GMT 2007
          [INFO] Final Memory: 9M/22M
          [INFO] ------------------------------------------------------------------------
          [INFO] Error for project: Unnamed - L2Emu:l2j-gameserver:jar:1.0.0 (during org.apache.maven.plugins:maven-surefire-plugin:2.3:test)
          [INFO] ------------------------------------------------------------------------
          [INFO] There are test failures.
          [INFO] ------------------------------------------------------------------------
          [INFO] For more information, run Maven with the -e switch
          [INFO] ------------------------------------------------------------------------
          [ERROR] reactor-execute : F:\L2jserver\L2Emu_GameServer_CT1
          FATAL ERROR: Error executing Maven for a project
          [INFO] BUILD ERRORS
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 2 minutes 52 seconds
          [INFO] Finished at: Wed Dec 19 08:08:25 GMT 2007
          [INFO] Final Memory: 9M/22M
          [INFO] ------------------------------------------------------------------------


          我要升成jar的包.但老是出錯..
          以前能用的.都沒動過什么東西.
          .就這兩天用不了
          Eclipse 我不太懂.問下這個是哪出錯了..要如何解決   回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-19 16:56 新手
          還要能關掉Maven的test 功能嗎.如果能的話.關掉后升成的jar能不能用呢  回復  更多評論
            

          # re: Maven Weed 2007-12-19 21:26 Sha Jiang
          > 還要能關掉Maven的test 功能嗎
          沒問題,完全可以不執行test,在執行的命令中加上屬性,-Dmaven.test.skip=true,即可。

          > 如果能的話.關掉后升成的jar能不能用呢
          生成artifate與是否執行test無關,所以可以放心使用。  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-19 21:29 新手
          但是我用的是pom.xml......我要如何改呢...命令部分不我不太會  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-19 21:30 新手
          還有上面那人是什錯.能告訴我 如何解決嗎.  回復  更多評論
            

          # re: Maven Weed 2007-12-20 09:24 Sha Jiang
          > 但是我用的是pom.xml......我要如何改呢...命令部分不我不太會
          pom.xml肯定是要的,但你是如何執行mvn命令的?是使用Maven的Eclipse插件?
          使用Maven,就是針對指定的pom.xml文件執行mvn命令;就如使用Ant,就是針對指定的build.xml文件執行ant命令。
          針對你的pom.xml文件,試試命令mvn -Dmaven.test.skip=true package
            回復  更多評論
            

          # re: Maven Weed 2007-12-20 09:33 Sha Jiang
          > 還有上面那人是什錯.能告訴我 如何解決嗎.
          應該是你的測試程序本身有問題,導致了test失敗。
          你先不做test,看看能不能執行成功。然后再只執行test,再分析會是什么問題。  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-20 15:49 新手
          我是用Eclipse的Maven插件直接執行pom.xml文件的.所以命令要怎么打.打在哪我不知道..你教下嗎.

          你能加我QQ嗎125789067 遠程幫我看下..都幾天了.還沒搞好.我對Eclipse和Maven都不是很熟悉.操作不來.

          pom.xml是別人編好的.以后我運行就能自動生成jar.但最近幾天不知道出什么問題.生成時一直接提示有錯.......但程序本身沒問題.我問過制作程序的人.生成部份應該沒辦法.暫時除了我之外.還沒有人反應升成不起來...  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-20 15:51 新手
          Tests run: 128, Failures: 2, Errors: 0, Skipped: 0

          [ERROR] mojo-execute : surefire:test
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project
          [ERROR] project-execute : L2Emu:l2j-gameserver:jar:1.0.0 ( task-segment: [assembly:assembly] (aggregator-style) )
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project
          [ERROR] reactor-execute : F:\L2jserver\L2Emu_GameServer
          Diagnosis: There are test failures.
          FATAL ERROR: Error executing Maven for a project


          提示有兩個錯.但就是不知道是哪錯了.東西太多.看不到哪出錯  回復  更多評論
            

          # re: Maven Weed 2007-12-20 17:15 Sha Jiang
          > 我是用Eclipse的Maven插件直接執行pom.xml文件的.所以命令要怎么打.
          > 打在哪我不知道..你教下嗎.
          我沒有使用Maven的Eclipse插件。
          但你能否先用命令去執行一下?先不管什么Eclipse插件了。

          > 你能加我QQ嗎125789067 遠程幫我看下
          我一般不用QQ,特別是在上班時。
          如果可以的話,加我的MSN:jiangshachina@hotmail.com  回復  更多評論
            

          # re: Maven Weed 2007-12-20 17:17 Sha Jiang
          > L2Emu:l2j-gameserver:jar:1.0.0
          這是你們的工程的artifact嗎?
          從上述信息中,看不出來原因。  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-21 11:15 新手
          Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.14 sec <<< FAILURE!
          testCreationWithStatSet

          ---(net.sf.l2j.gameserver.templates.TestL2NpcTemplate) Time elapsed: 0.094 sec <<< FAILURE!
          junit.framework.AssertionFailedError: expected:<UNKNOWN> but was:<null>
          at junit.framework.Assert.fail(Assert.java:47)
          at junit.framework.Assert.failNotEquals(Assert.java:282)
          at junit.framework.Assert.assertEquals(Assert.java:64)
          at junit.framework.Assert.assertEquals(Assert.java:71)
          at net.sf.l2j.gameserver.templates.TestL2NpcTemplate.testCreationWithStatSet(TestL2NpcTemplate.java:91)
          at net.sf.l2j.gameserver.templates.TestL2NpcTemplate.testCreationWithStatSet(TestL2NpcTemplate.java:91)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at junit.framework.TestCase.runTest(TestCase.java:154)
          at junit.framework.TestCase.runBare(TestCase.java:127)
          at junit.framework.TestResult$1.protect(TestResult.java:106)
          at junit.framework.TestResult.runProtected(TestResult.java:124)
          at junit.framework.TestResult.run(TestResult.java:109)
          at junit.framework.TestCase.run(TestCase.java:118)
          at junit.framework.TestSuite.runTest(TestSuite.java:208)
          at junit.framework.TestSuite.run(TestSuite.java:203)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
          at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
          at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:163)
          at org.apache.maven.surefire.Surefire.run(Surefire.java:84)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:244)
          at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:814)

          出錯的好像是這里....不過我看不懂.幫我看下..MSN我不會用.郁悶  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-21 11:16 新手
          testCreationWithDefaultValueForSomeStats(net.sf.l2j.gameserver.templates.TestL2NpcTemplate) Time elapsed: 0 sec <<< FAILURE!
          junit.framework.AssertionFailedError: expected:<UNKNOWN> but was:<null>
          at junit.framework.Assert.fail(Assert.java:47)
          at junit.framework.Assert.failNotEquals(Assert.java:282)
          at junit.framework.Assert.assertEquals(Assert.java:64)
          at junit.framework.Assert.assertEquals(Assert.java:71)
          at net.sf.l2j.gameserver.templates.TestL2NpcTemplate.testCreationWithDefaultValueForSomeStats(TestL2NpcTemplate.java:154)
          at net.sf.l2j.gameserver.templates.TestL2NpcTemplate.testCreationWithDefaultValueForSomeStats(TestL2NpcTemplate.java:154)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at junit.framework.TestCase.runTest(TestCase.java:154)
          at junit.framework.TestCase.runBare(TestCase.java:127)
          at junit.framework.TestResult$1.protect(TestResult.java:106)
          at junit.framework.TestResult.runProtected(TestResult.java:124)
          at junit.framework.TestResult.run(TestResult.java:109)
          at junit.framework.TestCase.run(TestCase.java:118)
          at junit.framework.TestSuite.runTest(TestSuite.java:208)
          at junit.framework.TestSuite.run(TestSuite.java:203)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
          at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
          at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:163)
          at org.apache.maven.surefire.Surefire.run(Surefire.java:84)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:244)
          at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:814)


          還有這里.兩個錯誤..  回復  更多評論
            

          # re: Maven Weed 2007-12-21 12:30 Sha Jiang
          沒有成功地通過單元測試,可能是應用程序不對,也可能是測試程序有問題。
          這些都是JUnit的問題,與Maven無關。  回復  更多評論
            

          # re: Maven Weed[未登錄] 2007-12-21 12:56 新手
          無關的話 那要如何解決呢.

          或者pom.xml這種文件.能用別的軟件生成jar嗎.  回復  更多評論
            

          # re: Maven Weed 2007-12-21 14:20 Sha Jiang
          > 或者pom.xml這種文件.能用別的軟件生成jar嗎.
          如果仍然使用pom.xml,那么就必須使用Maven。
          但也可以使用其它的build工具,如Ant,制作jar文件。

          其實,根據你的情況,可能只是在執行build的過程未能通過單元測試罷了,你不執行這個測試,看能不能完成build工作,并制作出jar文件。
          其實,我前面已經說了幾次,請你先跳過test這一步,看看執行mvn命令有能否成功。
          整個命令(mvn -Dmaven.test.skip=true package)也都給你了。你能否嘗試一下呢?!  回復  更多評論
            

          # re: Maven Weed(原) 2008-11-11 09:48 李睿凡
          樓主你好,拜讀大作.
          小弟使用maven2.0.9,搭建了一個struts basic項目
          使用mvn jetty:run-war能正常的跑起來 ,把war包扔到tomcat6.0.14上也能正常運行.

          而使用mvn tomcat:run-war就跑不起來 ,報異常說引用了多個版本的logging.log .
          使用這條命令(mvn tomcat:run-war)的時候,發現其使用的是tomcat5.5.15.

          請問怎么解決這個問題?
          另外,怎么指定讓maven用tomcat6運行?
          能讓它用我指定版本的tomcat運行,這應該是很需要的.

          謝謝!
          我的QQ:315920958  回復  更多評論
            

          主站蜘蛛池模板: 嘉兴市| 西畴县| 商洛市| 怀仁县| 云南省| 满洲里市| 桃江县| 富宁县| 仁寿县| 贺兰县| 健康| 吐鲁番市| 德令哈市| 黎平县| 嵩明县| 大姚县| 竹北市| 西安市| 格尔木市| 香河县| 金沙县| 昌邑市| 沿河| 贺州市| 连江县| 宽城| 福鼎市| 南木林县| 库伦旗| 仙桃市| 阿坝| 海安县| 枝江市| 龙陵县| 平安县| 西乌珠穆沁旗| 泸水县| 神木县| 纳雍县| 璧山县| 永福县|