使用maven分发akka微内核应用程序

我有一个用java开发的akka​​微内核应用程序。 为了分发应用程序,我使用了JCrankyi博客上的教程

http://jcranky.com/2012/07/13/akka-microkernel-with-maven/#comment-1322 

使用maven-assembly-plugin和akka启动脚本。

descriptor.xml如下所示

  akka  zip    ${Com-RubineEngine-GesturePoints} /deploy  *.jar      /lib     src/main/start /bin   src/main/resources/application.conf /config    

来自POM.xml的片段

   maven-assembly-plugin 2.3   /descriptor.xml     make-assembly package  single     

起始文件是批处理文件,内容如下所示。

 @echo off set SAMPLE=%~dp0.. set AKKA_HOME=%SAMPLE%\..\..\..\.. set JAVA_OPTS=-Xms1024M -Xmx1024M -Xss1M -XX:MaxPermSize=256M -XX:+UseParallelGC set AKKA_CLASSPATH=%AKKA_HOME%\lib\scala-library.jar;%AKKA_HOME%\lib\akka\* set SAMPLE_CLASSPATH=%SAMPLE%\config;%AKKA_CLASSPATH%;%SAMPLE%\lib\* java %JAVA_OPTS% -cp "%SAMPLE_CLASSPATH%" -Dakka.home="%SAMPLE%" akka.kernel.Main 

来自maven程序集的错误:程序集插件如下所示。

 [INFO] Reading assembly descriptor: /descriptor.xml [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.124s [INFO] Finished at: Wed Nov 07 11:46:10 GMT 2012 [INFO] Final Memory: 11M/245M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2. 3:single (make-assembly) on project com-theta-gesture: Failed to create assembly : Error adding file to archive: C:\Users\FAISAL\Desktop\disaster\com-theta-gestu re\src\main\start isn't a file. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit ch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please rea d the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE xception 

我认为错误很明显。

 C:\Users\FAISAL\Desktop\disaster\com-theta-gesture\src\main\start isn't a file 

我假设src/main/start是一个文件夹,你必须在该文件夹中指定文件的名称。 至少它不被识别为文件。

   src/main/start /bin   

我认为您应该将启动脚本放在src/main/scripts ,如标准目录布局简介中所述 。

   src/main/scripts/start.bat /bin   

编辑

为了validation您的start文件确实是一个文件,然后只需将一个简单的JUnit测试添加到您的src/main/test目录中。 这是一个简单的例子:

 package com.stackoverflow; import org.junit.Test; import java.io.File; import static org.junit.Assert.assertTrue; /** * @author maba, 2012-11-08 */ public class FileTest { @Test public void testIfStartScriptIsFile() { File file = new File("src/main/scripts/start.bat"); assertTrue("The tested file is not a real file!!!", file.isFile()); } }