当前位置: 首页 > 面试题库 >

使用Maven分发Akka微内核应用程序

许涵容
2023-03-14
问题内容

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

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

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

下面显示了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

问题答案:

我认为错误很明显。

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>

我想你应该把启动脚本中src/main/scripts,如所描述的介绍标准的目录结构。

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

编辑

为了验证您的start文件确实是文件,只需在src/main/test目录中添加一个简单的JUnit测试即可。这是一个简单的示例:

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());
    }
}


 类似资料:
  • 注:本节未经校验,如有问题欢迎提issue Akka微内核的目的是提供一个捆绑机制,以便将 Akka 应用程序作为一个单一有效载荷分发,而不需要在 Java 应用程序服务器中运行,或手动创建一个启动脚本。 Akka 微内核包含在Akka下载中. 要通过微内核运行应用,你需要创建一个 Bootable 类来处理应用的启动和关闭。下面例子中有介绍。 将你的应用jar包放在 deploy 目录下,并把依

  • 虽然用了书名号,但它是我的一个业余项目而已,它以Sara Golemon在2005年著作的《Extending and Embedding PHP》一书为蓝本翻译修改而来。这里先对Sara女士表示感谢,为我们奉献了这么优秀的一本技术图书。截止到目前(2011年),这几年以来,PHP的应用在中国突飞猛进,已经渗透到了互联网的各个方面,现在每个公司里都不可能一点没有PHP的影子了。有关PHP语言自身的

  • 是否可以保存谷歌地图的一部分并将其添加到我的应用程序中并显示出来?因为我只需要有限的区域,我不想在应用程序中使用internet连接。或者有可能限制在线地图中的区域?

  • 问题内容: 我的问题是关于将数据从内核传递到用户空间程序。我想实现一个系统调用“ get_data(size,char * buff,char ** meta_buf)”。在此调用中,buff由用户空间程序分配,并且其长度在size参数中传递。但是,meta_buf是可变长度的缓冲区,已分配(在用户空间程序的vm页面中)并由内核填充。用户空间程序将释放该区域。 (我无法在用户空间中分配数据,因为用

  • 我想使用maven创建一个多层java项目,如下所示: presentationlayer-guiModule(JSP/JSF页面的最顶层) PresentationLayer-GatewayModule(web服务的最顶层) BusinessLayer-ServiceModule(中间层) DataAccessLayer(最下层) 通用层(可从所有层访问的垂直层) 根pom 耳POM Guimo

  • 问题内容: 什么: NodeJS应用程序可以二进制形式分发吗?即。您通过V8将.js应用编译为其本机二进制文件,然后将该二进制文件分发给客户端?(如果您拥有对NodeJS服务器的全部访问权限)…还是正在缩小代码,您可以做些什么? 原因: 我们在NodeJS中为客户端构建服务器端应用程序,这些应用程序通常必须托管在客户端的服务器上。分发源代码意味着客户可以轻松地窃取我们的解决方案并停止支付许可费用。