1

私がやっているscalaプロジェクトがありsbt publishます。それは私にいくつかのアーティファクトを与えます:

/maven/repo/com/davez0r/proj_2.10/vers/proj_2.10-vers.jar
/maven/repo/com/davez0r/proj_2.10/vers/proj_2.10-vers.pom
...others...

今、そのjar内でクラスを実行したい:

$ mvn -f /maven/repo/com/davez0r/proj_2.10/vers/ exec:java 
      -Dexec.mainClass="com.davez0r.App"

これは機能しません:

java.io.FileNotFoundException: /maven/repo/com/davez0r/proj_2.10/vers/pom.xml

わかりました。生成さmvnれたpomファイルを指定できます。sbt

$ mvn -f /maven/repo/com/davez0r/proj_2.10/vers/proj_2.10-vers.pom exec:java 
      -Dexec.mainClass="com.davez0r.App"

これで依存関係が見つかりましたが、jar次の場所が見つかりませんpom:

java.lang.ClassNotFoundException: com.davez0r.App

このアーティファクトのセットのみが依存する別のプロジェクトを作成できますが、それは不要なようです。これの詳細を回答として投稿します。

経由でリポジトリから直接実行する方法はありますmvnか? で何かが正しく設定されていpomませんか?

<project>
  <modelVersion>4.0</modelVersion>
  <groupId>com.davez0r</groupId>
  <artifactId>proj_2.10</artifactId>
  <packaging>jar</packaging>
  <description>proj</description>
  <version>vers</version>
  <name>proj</name>
  <organization>
    <name>com.davez0r</name>
  </organization>
  <dependencies>...</dependencies>
</project>

ありがとう!

4

1 に答える 1

1

別のを作成することでこれを機能させることができますpom.xml

<project>
  <modelVersion>4.0.0</modelVersion>
  <repositories>
    <url>http://davez0r.com/maven/</url>
    ...
  </repositories>

  <groupId>com.davez0r</groupId>
  <artifactId>launcher</artifactId>
  <version>1</version>

  <dependencies>
    <dependency>
      <groupId>com.davez0r</groupId>
      <artifactId>proj_2.10</artifactId>
      <version>vers</version>
    </dependency>
  </dependencies>
</project>

次にmvn exec:java、上記のファイルを含むディレクトリに移動すると、正常に実行されます。

于 2013-10-29T17:56:48.253 に答える