1

Java で開発された akka マイクロ カーネル アプリケーションがあります。アプリケーションを配布するには、JCrankyi のブログのチュートリアルを使用しました

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

maven-assembly-plugin と akka start スクリプトを使用します。

descriptor.xml を以下に示します。

 <id>akka</id>

  <formats>
    <format>zip</format>
  </formats>

  <fileSets>
    <fileSet>
      <directory>${Com-RubineEngine-GesturePoints}</directory>
      <outputDirectory>/deploy</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
  </fileSets>

  <dependencySets>
    <dependencySet>
      <outputDirectory>/lib</outputDirectory>
    </dependencySet>
  </dependencySets>

  <files>
    <file>
      <source>src/main/start</source>
      <outputDirectory>/bin</outputDirectory>
    </file>

    <file>
      <source>src/main/resources/application.conf</source>
      <outputDirectory>/config</outputDirectory>
    </file>
  </files>

</assembly>

POM.xml のスニペット

 <plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <descriptors>
      <descriptor>/descriptor.xml</descriptor>
    </descriptors>
  </configuration>

  <executions>
    <execution>
      <id>make-assembly</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>   

開始ファイルはバッチ ファイルであり、その内容を以下に示します。

@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 assembly:assembly プラグインからのエラーを以下に示します。

[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
4

1 に答える 1

1

エラーはかなり明確だと思います。

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

それsrc/main/startはフォルダーであり、そのフォルダー内のファイルの名前を指定する必要があると思います。少なくともファイルとしては認識されません。

<files>
    <file>
        <source>src/main/start</source>
        <outputDirectory>/bin</outputDirectory>
    </file>
</files>

Introduction to the Standard Directory Layoutsrc/main/scriptsで説明されているように、開始スクリプトを配置する必要があると思います。

<files>
    <file>
        <source>src/main/scripts/start.bat</source>
        <outputDirectory>/bin</outputDirectory>
    </file>
</files>

編集

ファイルが実際にファイルであることを確認するに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());
    }
}
于 2012-11-07T12:17:34.243 に答える