【问题标题】:Maven assembly Plugin with Maven Jar Plugin带有 Maven Jar 插件的 Maven 程序集插件
【发布时间】:2010-12-12 21:31:06
【问题描述】:

我第一次尝试使用 maven 程序集插件。本质上,我想将 maven 程序集插件的输出与 maven jar 插件的输出结合到 target/classes 目录中,这样我仍然可以在 Eclipse 中运行应用程序。

我找不到告诉 maven jar 插件收集 maven 程序集插件的输出的方法。同样,我发现没有办法告诉程序集插件将其输出放入目标/类中。

解决方案的关闭是告诉程序集插件将其结果输出到 classes.dir 目录。后缀 'dir' 是使用的格式,而 'classes' 是插件配置中定义的 finalName。

我希望 directory-single 会强制程序集插件忽略格式,因此在类目录中输出。这对我不起作用;我是否误解了对这个目标的描述?

你们会如何解决这个问题?下面是我在 pom 中的程序集插件声明以及我的描述符:

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-1</version>
            <executions>
                <execution>
                    <id>package</id>
                    <goals>
                         <goal>directory-single</goal> 
                    </goals>
                    <phase>package</phase>
                </execution>
            </executions>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <finalName>classes</finalName>

                <descriptors>
                    <descriptor>descriptor.xml</descriptor>
                </descriptors>
            </configuration>
        </plugin>


     <assembly>
     <files>
    <file>
        <source>${repository-path}</source>
        <outputDirectory>/</outputDirectory>
        <filtered>true</filtered>
        <destName>repository.xml</destName>
    </file>
    </files>
    <fileSets>
    <fileSet>
        <directory>src/main/resources</directory>
        <outputDirectory>/</outputDirectory>
    </fileSet>
    <fileSet>
         <directory>${project.build.directory}</directory>
    </fileSet>
   </fileSets>
  </assembly>

【问题讨论】:

  • 您要解决什么问题?你能解释一下这个拳头吗?然后,我们将看看是否有解决方案。但就目前而言,我真的不清楚你想要实现的目标。
  • 谢谢,让我重新表述一下。 1)我使用程序集插件的主要原因是在构建过程中重命名一些文件。我有来自 QA、Prod 和 Dev 的不同版本的文件,这对应用程序应该是透明的。现在,程序集插件解决了这个问题。但它产生的问题是我找不到将生成的文件放在目标/类文件夹中的方法,这样应用程序就可以像在 Prod 中那样读取它。那么,简单来说,我如何告诉汇编插件将处理后的数据放入 target/classes 而不是 target/classes.dir?
  • 配置文件不是一个选项吗?管理环境特定的东西是配置文件的一个很好的用例(结合过滤)。
  • 不能直接过滤,因为内容很大,差别很大。解决方法是将此配置文件的名称放在另一个文件中,然后过滤后一个文件。这意味着应用程序将需要读取第二个文件以确定它需要读取哪个配置文件。一定有一个更简单的解决方案。
  • 您不能根据您使用的配置文件包含一个或另一个(使用相同的名称)吗?真的,你应该用你想要解决的确切问题来更新你的问题。

标签: maven-2 assemblies jar


【解决方案1】:

这正是我想要做的。你会怎么做?也就是说,您有两个文件 Dev.xml 和 Prod.xml,您希望根据配置文件将它们包含为 Config.xml。

您可以使用 maven-antrun-plugin 和配置文件来删除/复制/重命名配置文件,具体取决于目标环境(这是一种解决方案)。看看Building For Different Environments with Maven 2,本指南准确地展示了如何实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多