John Jiang

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

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

          向本地倉(cāng)庫(kù)安裝文件
              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)

          打包時(shí),不在META-INF中生成maven目錄
              使用Maven打包(mvn package)時(shí),默認(rèn)地會(huì)在META-INF中生成一個(gè)目錄maven,里面是一個(gè)pom和一個(gè)屬性文件。如果不想生成這個(gè)目錄,需要在POM中進(jìn)行如下配置:
          以對(duì)于一般應(yīng)用程序打包,即制作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)時(shí),報(bào)如下錯(cuò)誤:
          [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版本),需要升級(jí)到最新的2.1版本。運(yùn)行命令mvn -U package,會(huì)先下載最新版本,再執(zhí)行打包操作。
              類似的,對(duì)于制作war,ear包,只需要將artifactId換成對(duì)應(yīng)的plugin(
          maven-war-plugin maven-ear-plugin )就可以了。

          Javadoc中文亂碼
              中文操作系統(tǒng)中,JDK1.5.0的Javadoc自動(dòng)默認(rèn)支持中文,而且頁(yè)面中的條目名也都默認(rèn)為中文顯示(在之前的JDK中,這些條目名都默認(rèn)為英文)。
          如是在這種情況下使用命令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表示了某個(gè)依賴關(guān)系的適用范圍(作用域),共有5個(gè)scope。
          compile: 默認(rèn)的適用范圍,表示該依賴關(guān)系要應(yīng)用于所有的classpath。
          provided: 該適用范圍非常像compile適用范圍。但它表示該依賴關(guān)系已經(jīng)由JDK或某個(gè)容量提供,如javax.servlet。
          runtime:表示該依賴關(guān)系不用于編譯階段,而只使用于運(yùn)行時(shí)階段,如apache jakarta commons。
          test:表示該依賴關(guān)系并不用于實(shí)際的應(yīng)用程序本身,而是該應(yīng)用的測(cè)試程序的編譯與運(yùn)行,如junit。
          system:該依賴關(guān)系類似于provided,但必須顯示地表示是哪一個(gè)容器提供了這個(gè)artifact。無法在倉(cāng)庫(kù)中找到該artifact。
          注意:
          [1]具有compile或runtime適用范圍的依賴關(guān)系中的jar文件,制作war文件時(shí)將會(huì)被放入WEB-INF/lib目錄中。
          [2]不推薦使用system適用范圍。

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

          制作war文件時(shí),過濾文件
          使用maven-war-plugin制作war文件時(shí),它會(huì)先將所有可能用于制作war的內(nèi)容放入target/artifactId-version目錄(標(biāo)準(zhǔn)目錄結(jié)構(gòu))下,然后再將這些文件進(jìn)行打包。這樣就有兩種方法進(jìn)行文件過濾:[1]使期望被過濾的文件一開始就不被放入
          target/artifactId-version目錄,即使它成為不可能的文件;[2]在制作war文件時(shí),不將期望被過濾的文件加入包中。
          [1]實(shí)現(xiàn)第一種方法,要對(duì)dependency進(jìn)行配置。將不希望加入包的artifact放入exclusion參數(shù)中,如下腳本所示:
          <dependency>
              
          <groupId>commons-configuration</groupId>
              
          <artifactId>commons-configuration</artifactId>
              
          <exclusions>
                  
          <exclusion>
                      
          <groupId>dom4j</groupId>
                      
          <artifactId>dom4j</artifactId>
                  
          </exclusion>
              
          </exclusions>
          </dependency>
          [2]實(shí)現(xiàn)第二種方法,要對(duì)maven-war-plugin進(jìn)行配置,將
          不希望加入包的資源文件(不再稱之為artifact)放入warSourceExcludes參數(shù)中,如下腳本所示:
          <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文件,它還會(huì)過濾掉dom4j所依賴的其它文件(artifact)。

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

          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>
          使用如上的腳本即可,但該腳本只能針對(duì)jar文件,而不能針對(duì)war或ear...文件。maven-source-plugin并沒有提供install或deploy Web工程源代碼的goal。

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

          在Maven發(fā)行包中找到Super POM文件
          所有的POM都默認(rèn)繼承Super POM,該P(yáng)OM定義了Maven標(biāo)準(zhǔn)目錄結(jié)構(gòu)。但在Maven的發(fā)行包中,這個(gè)Super POM是存放在了哪里呢?
          這個(gè)POM就存放在maven-project的jar文件中。在筆者的機(jī)器中,該Super POM的位置是:
          Maven_Home/lib/maven-project-2.0.4.jar/org/apache/maven/project/pom-4.0.0.xml

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

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

          評(píng)論

          # re: Maven + Continuum Weed 2006-12-04 14:41 zhengoodman
          不好意思,弱弱的問一下。我想把web程序部署到tomcat下,要用到什么插件,如何才能下載這個(gè)插件?
          我看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版本。不知應(yīng)該下載哪個(gè)?pom文件應(yīng)該怎么寫?把他自帶的pom文件的內(nèi)容拷過來就行嗎?  回復(fù)  更多評(píng)論
            

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

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

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

            回復(fù)  更多評(píng)論
            

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

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

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

          關(guān)于Maven2的好書?
          不得不推薦一下《Better Build with Maven》
          這本書是免費(fèi)的,網(wǎng)上應(yīng)該早就傳開了。
          它的官方獲取地址:http://www.mergere.com/m2book_download.jsp
          也可以下載到書中的源代碼,非常不錯(cuò) :D
            回復(fù)  更多評(píng)論
            

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

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

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

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

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

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

          應(yīng)該可以使用maven-assembly-plugin達(dá)到相同的目的。
          http://maven.apache.org/plugins/maven-assembly-plugin/  回復(fù)  更多評(píng)論
            

          # re: Maven Weed 2007-01-16 17:18 fy
          請(qǐng)教個(gè)問題,我用的是:eclipse:3.2.1,maven:2.0.4,org.maven.ide.eclipse:0.0.9.但是在eclipse中執(zhí)行compile總是錯(cuò):
          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中就不會(huì)錯(cuò):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] ------------------------------------------------------------------------

          不知道該怎么辦?
            回復(fù)  更多評(píng)論
            

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

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

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

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

          # re: Maven Weed 2007-01-18 09:58 fy
          Hello!
          請(qǐng)問,你知道m(xù)aven在產(chǎn)生site的時(shí)候,能做成中文的嗎?我找了好久都沒看到有人提到這件事。  回復(fù)  更多評(píng)論
            

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

          # re: Maven Weed 2007-04-20 14:53 Joeaniu
          maven調(diào)試的一個(gè)小tip: 不要一次定義過多的內(nèi)容,從最簡(jiǎn)單的pom.xml開始,一小塊一小塊的添加,以便定位問題。  回復(fù)  更多評(píng)論
            

          # 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的包.但老是出錯(cuò)..
          以前能用的.都沒動(dòng)過什么東西.
          .就這兩天用不了
          Eclipse 我不太懂.問下這個(gè)是哪出錯(cuò)了..要如何解決


            回復(fù)  更多評(píng)論
            

          # 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的包.但老是出錯(cuò)..
          以前能用的.都沒動(dòng)過什么東西.
          .就這兩天用不了
          Eclipse 我不太懂.問下這個(gè)是哪出錯(cuò)了..要如何解決   回復(fù)  更多評(píng)論
            

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

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

          > 如果能的話.關(guān)掉后升成的jar能不能用呢
          生成artifate與是否執(zhí)行test無關(guān),所以可以放心使用。  回復(fù)  更多評(píng)論
            

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

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

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

          # re: Maven Weed 2007-12-20 09:33 Sha Jiang
          > 還有上面那人是什錯(cuò).能告訴我 如何解決嗎.
          應(yīng)該是你的測(cè)試程序本身有問題,導(dǎo)致了test失敗。
          你先不做test,看看能不能執(zhí)行成功。然后再只執(zhí)行test,再分析會(huì)是什么問題。  回復(fù)  更多評(píng)論
            

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

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

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

          # 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


          提示有兩個(gè)錯(cuò).但就是不知道是哪錯(cuò)了.東西太多.看不到哪出錯(cuò)  回復(fù)  更多評(píng)論
            

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

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

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

          # 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)

          出錯(cuò)的好像是這里....不過我看不懂.幫我看下..MSN我不會(huì)用.郁悶  回復(fù)  更多評(píng)論
            

          # 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)


          還有這里.兩個(gè)錯(cuò)誤..  回復(fù)  更多評(píng)論
            

          # re: Maven Weed 2007-12-21 12:30 Sha Jiang
          沒有成功地通過單元測(cè)試,可能是應(yīng)用程序不對(duì),也可能是測(cè)試程序有問題。
          這些都是JUnit的問題,與Maven無關(guān)。  回復(fù)  更多評(píng)論
            

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

          或者pom.xml這種文件.能用別的軟件生成jar嗎.  回復(fù)  更多評(píng)論
            

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

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

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

          而使用mvn tomcat:run-war就跑不起來 ,報(bào)異常說引用了多個(gè)版本的logging.log .
          使用這條命令(mvn tomcat:run-war)的時(shí)候,發(fā)現(xiàn)其使用的是tomcat5.5.15.

          請(qǐng)問怎么解決這個(gè)問題?
          另外,怎么指定讓maven用tomcat6運(yùn)行?
          能讓它用我指定版本的tomcat運(yùn)行,這應(yīng)該是很需要的.

          謝謝!
          我的QQ:315920958  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 崇左市| 屏南县| 长葛市| 社旗县| 凉城县| 寿光市| 田东县| 红安县| 略阳县| 涟水县| 山东省| 重庆市| 明星| 海安县| 临泉县| 如皋市| 吉安县| 建瓯市| 大丰市| 北辰区| 英吉沙县| 乐都县| 施甸县| 黄梅县| 长春市| 哈密市| 闽侯县| 玛沁县| 潼南县| 来安县| 泸水县| 桐城市| 丰宁| 南京市| 仁化县| 灵台县| 固镇县| 安塞县| 中超| 山阳县| 酉阳|