2011-05-05 61 views
8

我正在使用Eclipse和Maven,並使用Maven碼頭插件運行我的應用程序。使用maven碼頭時:運行 - 是否可以禁用編譯步驟?

我發現它輕度刺激,Maven堅持每次執行碼頭時重新編譯我的文件:運行。這是次優的,因爲這些文件已經被Eclipse編譯了(並且我正在編寫Scala,它有一個(相對)較慢的編譯器)。

我正在使用配置文件,並運行mvn碼頭:在我的'開發'配置文件下運行。

我想要做的是:

配置碼頭插件使得它跳過編譯階段,而在發展曲線運行。

我已經研究過的Maven生命週期的文檔,但還沒有找到關於「skip.compile」標誌或配置參數的任何信息。

我也試着配置Maven這樣的徒勞的假設,它會停止maven-jetty-plugin啓動時的重新編譯。

我錯了,它沒有工作。但我的想法是,也許Scala編譯器是問題。也許它忽略了編譯的東西。

發展 Maven的編譯器插件 默認testCompile 測試編譯 默認編譯 編譯 1.6 1.6 假 org.mortbay.jetty 碼頭-行家-插件 7.2.2。v20101205 真正 發展

更新:

我要去嘗試專門禁用斯卡拉編譯

+0

據我所知,您可以配置碼頭插件週期性,所以你掃描不需要停止碼頭...並在Eclipse中進行更改...深入瞭解maven-jetty插件.. – khmarbaise 2011-05-05 11:41:35

+0

khmarbaise,我已經禁用掃描,因爲我正在使用jrebel進行編譯。我也深入瞭解插件,否則我不會在這裏。它需要的是禁用碼頭的fork編譯階段:運行目標 – 2011-05-05 11:56:47

回答

-1

如果你說的類已經被編譯Eclipse中有兩種可能的重新編譯原因:

  • 您正在調用clean或以某種方式刪除已編譯的類;
  • Eclipse的輸出文件夾與Maven的輸出文件夾不同。

因此,您需要防止刪除已編譯的類或將Eclipse和Maven配置爲使用相同的輸出文件夾。

+1

不,這不是原因。原因是jetty:run目標在每次啓動時都要進行編譯。我已經解決了這個問題,現在將發佈解決方案。 – 2011-05-05 16:07:01

2

的解決方法是設置環境變量:

MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE" 

以上爲我工作。

其他地方在互聯網上它被描述爲:

MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y" 
+0

我的代碼,編譯,測試,循環都不太可以接受! – 2011-05-17 20:21:50

+0

雖然這似乎工作,但事實上並沒有這樣做。回到繪圖板。 – 2011-05-18 07:45:23

+0

另一部分是遠程調試器連接 – 2012-02-16 20:17:57

9

終於解決了吧.. @RobertMunteanu

哇!那麼我終於明白我在做什麼錯了,解決方案是創建一個開發和生產配置文件,併爲開發配置文件配置Scala插件執行什麼也不做。

像這樣:

<profile> 
    <id>development</id> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.scala-tools</groupId> 
     <artifactId>maven-scala-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>compile</id> 
      <goals></goals> 
      <phase>compile</phase> 
      </execution> 
      <execution> 
      <id>test-compile</id> 
      <goals></goals> 
      <phase>test-compile</phase> 
      </execution> 
      <execution> 
      <id>default-testCompile</id> 
      <phase>test-compile</phase> 
      <goals></goals> 
      </execution> 
      <execution> 
      <id>default-compile</id> 
      <phase>compile</phase> 
      <goals></goals> 
      </execution> 
      <execution> 
      <phase>process-resources</phase> 
      <goals> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
0

經過一番研究,這個問題是不是與碼頭插件,但與Maven編譯器的插件。 incrementalCompilation中存在一個錯誤。看到這個stackoverflow問題和答案:Maven compiler plugin always detecting a set of sources as "stale"

以下配置適合我;它允許碼頭非常快速重新啓動時,代碼以最小的重新編譯改變,如果你已經編譯它不會重新編譯:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <encoding>UTF-8</encoding> 
     <debug>${compile.debug}</debug> 
     <useIncrementalCompilation>false</useIncrementalCompilation> 
      </configuration> 
</plugin> 
    <plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId> 
    <version>6.1.26</version>  
       <configuration> 
       <contextPath>/</contextPath>      
       <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory> 
       <scanIntervalSeconds>2</scanIntervalSeconds> 
       <scanTargets> 
        <scanTarget>src/main/java</scanTarget> 
       </scanTargets>      
      </configuration>    
</plugin> 
相關問題