簡體   English   中英

如何從命令行編譯Maven項目與所有依賴項?

[英]How to compile Maven project from command line with all dependencies?

我有一個Maven項目,我通常可以編譯並從eclipse運行但是當我從命令行編譯它時它的依賴項丟失了,我收到了錯誤。 我可以在下載依賴項之后編譯項目,並將它們添加到c:/ Java / jdk / jre / lib / ext

如何從控制台行編譯項目及其依賴項,而無需手動將其添加到jdk? 編譯器可以以某種方式讀取maven依賴項嗎?

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>TCPPing</groupId>
  <artifactId>TCPPing</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.3</version>
    </dependency>
        <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.6</version>
    </dependency>
  </dependencies>
</project>

從具有一些maven支持的IDE(Eclipse,IntellIJ)運行應用程序應該非常簡單。 這些IDE將負責創建正確的類路徑。

如果您想手動執行此操作,請嘗試以下操作:

更改到包含pom.xml的目錄執行maven命令:

mvn clean install

這將編譯您的項目並創建您在pom.xml文件中定義的jar。 它運行maven階段干凈,每個階段都要安裝(編譯,測試等)。

然后收集您用作依賴項的所有jar文件(運行項目所需):

mvn dependency:copy-dependencies

這將執行依賴項插件,該插件將所有依賴項復制到target/dependency

然后,您可以使用以下命令運行main方法:

cd target/
java -cp TCPPing-0.0.1-SNAPSHOT.jar:dependency TCPPing

-cp定義類路徑(包含類的所有位置/ jar文件/文件夾)。 TCPPing是具有main方法的運行類。

注意:適用於Linux / Mac - 我認為Windows使用的是;

Javac對maven一無所知。 因此它不會使用maven pom.xml。

maven的價值在於它消除了構建,測試和發布項目的手動工作。

這包括獲取依賴項,並將javac與javac一起添加到javac命令的類路徑中。

您可以在maven下載依賴關系到〜/ .m2 / repository之后手動執行javac。 但是你需要告訴javac在哪里找到罐子。 這樣就可以通過classpath參數完成。

如果您在使用mvn編譯它之后嘗試運行該項目,則需要在放置.class文件的同一文件夾中執行此操作。 因此應該是/ target / java或類似的。

暫無
暫無

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

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