簡體   English   中英

如何編譯基於Maven的Java項目以從命令行運行它

[英]How to compile Maven based Java project to run it from command line

我有一個Maven項目,我需要以某種方式進行編譯,以便能夠將已編譯的文件傳輸到另一台計算機上,然后在該計算機上執行(可能使用不同的Java版本)。 我看着這個問題

並能夠執行:

mvn clean install
mvn dependency:copy-dependencies

但是當我嘗試:

cd target/
java -cp myApp-0.0.1.jar:dependency myApp

我有

Error: Could not find or load main class myApp

我的pom.xml沒有mvn-assembly-plugin或maven-jar-plugin(並且在mvn全新安裝后,我在target /中成功獲取了.jar)。

我不確定這些步驟是否與我的目標相關,因為我需要創建的東西可以在沒有任何java -jar或mvn的情況下運行,並且可以移植並在其他機器上運行。

有一個Maven構建插件,它將您的所有依賴項捆綁在一個JAR中。 您可以簡單地執行它

java -jar mybundled.jar

無需關心類路徑依賴關系。

這里是Maven插件。 用入口點替換MainClass

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-assembly-plugin</artifactId>
   <version>2.4.1</version>
   <configuration>
      <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>       
      <archive>
        <manifest>
          <mainClass>com.yourdomain.Main</mainClass>
        </manifest>
      </archive>
     </configuration>
    <executions>
      <execution>
         <id>make-assembly</id>
         <phase>package</phase>
         <goals>
           <goal>single</goal>
         </goals>
       </execution>
    </executions>
</plugin>

由於它與package lifecycle ,因此在執行完...之后,您將在目標目錄中找到捆綁的JAR。

mvn package

關於您的代碼不會在另一台計算機上運行的擔憂,Java與平台無關, 通常您可以依靠它。 但是,我想到了三件事可能會使生活變得艱難:

  1. 您的代碼取決於系統編碼。 Maven應該在日志中向您發出警告,建議您明確指定它。
  2. 您與運行時進行交互,就像執行系統命令一樣。 ps不能在Windows上運行,而dir /s可能無法在* nix上運行。
  3. 您的Java環境版本不同。 當然,JavaFX代碼不會與Java 1.5一起運行。 如果您使用最新功能,請確保您的客戶端已經具有相應的版本,或者至少能夠從某個地方獲取它。 您可能也想看看sourcetarget編譯選項: http : //docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#crosscomp-example

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM