2013-10-29 17 views
1

我有一個scala項目,我正在做一個sbt publish。它給了我一些文物:mvn exec:在一個sbt項目上的java

/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... 

現在我想運行罐子裏面的類:

$ 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位於sbt生成的pom文件中:

$ 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> 

謝謝!

回答

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包含上述文件的目錄,並運行良好。