簡體   English   中英

如何在Java中為Heroku工作進程設置最小的Maven pom.xml文件?

[英]How to set up a minimal Maven pom.xml file for a Heroku worker process in Java?

首先:我不是Java編碼器。 我是Java / Maven工具鏈的新手。 我們正在為我們想要作為Heroku后台工作者啟動的項目使用Java庫。

該項目依賴於兩個外部庫,即通過Maven中央存儲庫提供的mongodb Java驅動程序,以及另一個第三方庫。 我已經看過關於“非托管依賴”Heroku文章 ,但是其他東西看起來缺失了,因為我得到了一個錯誤: Could not find the main class: com.company.myproject.MyApp Program will exit. 當我嘗試根據Heroku關於“Java入門”的說明在本地運行應用程序時。

我注意到他們的pom.xml文件包含一個Maven插件maven-dependency-plugin來復制依賴項,當我檢查我的target/classes文件夾時,我沒有看到任何依賴項。

Heroku還發布了一篇關於在Java中構建后台工作者指南 那個pom.xml包含一個構建程序集插件,看起來更復雜。

我在這個儀式上有點迷失(特別是來自Rails),我想用最簡單的pom.xml來統計這個問題。 Heroku上有Java工作者的Maven原型文件嗎? 我也使用NetBeans作為IDE,如果可以的話,使用IDE工具會很好,但它是次要的優先級。

到目前為止我的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>com.myproject</groupId>
  <artifactId>myproject</artifactId>
  <version>0.1</version>
  <packaging>jar</packaging>

  <name>myproject</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>2.7.3</version>
    </dependency>
    <dependency>
      <groupId>org.thirdparty</groupId>
      <artifactId>thirdparty</artifactId>
      <version>0.2.9</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <repositories>
      <repository>
          <id>project-local</id>
          <name>Project-local Repo</name>
          <url>file:${project.basedir}/repo</url>
      </repository>
  </repositories>
</project>

您肯定需要使用maven-dependency-plugin將所有maven-dependency-plugin復制到target/dependency錄中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals><goal>copy-dependencies</goal></goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后你的Procfile需要在類路徑中包含這些依賴項:

foo: java -cp target/classes:target/dependency/* com.myproject.Main

其中com.myproject.Main是您要運行的Java類的類名(必須包含一個public static void main方法。請注意,這也會將從src/main/java編譯的Java類添加到target/classes目錄。

暫無
暫無

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

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