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

捆绑多个工件进行部署?

阳勇
2023-03-14
问题内容

这是基于此答案的跟进。

我有一个看起来像的结构

$ ls service/target/
classes             lib             maven-status            surefire-reports
classes.-1194128992.timestamp   maven-archiver          service-1.0-SNAPSHOT.jar

lib内装看起来像

$ ls service/target/lib/
activation-1.1.jar              akka-http-spray-json-experimental_2.11-1.0.jar  mail-1.4.7.jar                  scala-reflect-2.11.2.jar
akka-actor_2.11-2.3.12.jar          akka-parsing-experimental_2.11-1.0.jar      manager-1.0-SNAPSHOT.jar            scala-xml_2.11-1.0.2.jar
akka-http-core-experimental_2.11-1.0.jar    akka-stream-experimental_2.11-1.0.jar       reactive-streams-1.0.0.jar          scalatest_2.11-2.2.5.jar
akka-http-experimental_2.11-1.0.jar     config-1.2.1.jar

作为的一部分mvn clean install,我想捆绑my-deployment-artifact看起来应该包含

service-1.0-SNAPSHOT.jar
lib/* (all the jars here)

如何将其创建为tar.tar.gz并与一起生产mvn clean install


问题答案:

您可以maven-assembly-plugin用来执行该任务。

在中创建程序集定义文件 src/assembly/distribution.xml

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>distribution</id>
    <formats>
        <format>tar</format>
    </formats>
    <files>
        <file>
            <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
        </file>
    </files>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/lib</directory>
            <outputDirectory>lib</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

pom.xml文件中,添加插件声明,执行阶段和目标。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
        <descriptor>${project.basedir}/src/assembly/distribution.xml</descriptor>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

maven-assembly- plugin可以在这里找到更多格式文件或自定义格式文件:https : //maven.apache.org/plugins/maven-assembly-
plugin/



 类似资料:
  • 我编写了一个定制的NiFi处理器,它使用一些Hadoop类,处理流文件,并在Avro之间序列化流文件。 处理器的pom.xml文件如下所示: 因为我已经将标记为,所以它不会绑定在生成的NAR文件中。现在,我可以做一个快速修复,完全删除作用域并创建NAR,但NiFi会抱怨next class not found错误。 我想知道:

  • 我正在尝试用https://github.com/php-amqplib/rabbitMQBundle和Symfony2框架实现RabbitMQ。 我已经设法使这个东西在一个生产者和一个消费者的情况下工作,但问题是当我使用多个消费者的时候。 这是我的配置: [Symfony\Component\DependencyInjection\Exception\ServiceNotFoundExcepti

  • 我使用EclipseIndigo使用OSGiJava框架开发了一些包。有一个主捆绑包,它依赖于其他捆绑包,并且具有要运行的主程序。如果我尝试在Eclipse中运行所有捆绑包,一切都正常工作,但是如果我将每个捆绑包保存为一个JAR,并在命令行中启动OSGi框架,当我尝试启动主捆绑包时,会出现异常<code>NoClassDefFoundError。找不到的类是依赖项。包的其余部分处于活动状态,主包刚

  • 问题内容: 我有一个简单的应用程序,其中要求用户提供以下某些信息。 请提供您的域名。 **用户:www.google.com** 请提供您庞大的网址。 **用户:www.vast.xx.com** 请选择职位。a)左下。b)右下。 用户: b)右下 用户提供了这些信息后,按钮出现,用户单击以生成代码。他得到以下代码。 这是我完整的webpack配置文件:webpack config 使用此脚本,用

  • 我正在制作一个运行在karaf 4.0.4上的osgi应用程序。 我的应用程序使用一个PostgreSQL数据库。连接器由pax jdbc处理。我使用Karaffeature和功能。 一些模块提供可以添加/删除的服务。 TL/DR:有没有办法将我的实体拆分成多个包? 以下是我的情况: 我目前有一个名为model的模块 我的文件 类注释 注释的类和 访问我实体的服务 这是我的持久性文件: 以及用于访

  • 在本章中,您将学习如何在Aurelia框架中使用捆绑。 第1步 - 安装先决条件 您可以通过在command prompt运行以下命令来安装aurelia-bundler 。 C:\Users\username\Desktop\aureliaApp>npm install aurelia-bundler --save-dev 如果您没有安装gulp,可以通过运行此代码来安装它。 C:\Users