Maven 2 将BIRT运行时覆盖到正确的WAR位置

Maven 2 将BIRT运行时覆盖到正确的WAR位置,maven-2,maven-plugin,birt,Maven 2,Maven Plugin,Birt,我试图让Maven在WAR中一个有用的位置使用BIRT运行时组装WAR BIRT运行时位于pom.xml中,如下所示 <dependency> <groupId>org.eclipse.birt</groupId> <artifactId>report-engine</artifactId> <version>2.3.2</version> <type>zip</type>

我试图让Maven在WAR中一个有用的位置使用BIRT运行时组装WAR

BIRT运行时位于pom.xml中,如下所示

<dependency>
  <groupId>org.eclipse.birt</groupId>
  <artifactId>report-engine</artifactId>
  <version>2.3.2</version>
  <type>zip</type>
  <scope>runtime</scope>
</dependency>
我的覆盖配置看起来像

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <overlays>
      <overlay>
        <groupId>org.eclipse.birt</groupId>
        <artifactId>report-engine</artifactId>
        <type>zip</type>
        <includes>
          <include>ReportEngine/lib/*</include>
        </includes>
        <targetPath>WEB-INF/lib</targetPath>
      </overlay>
      <overlay>
        <groupId>org.eclipse.birt</groupId>
        <artifactId>report-engine</artifactId>
        <type>zip</type>
        <includes>
          <include>ReportEngine/configuration/*</include>
          <include>ReportEngine/plugins/*</include>
        </includes>
        <targetPath>WEB-INF/platform</targetPath>
      </overlay>
    </overlays>
  </configuration>
</plugin>
这涉及到同样的问题,没有答案

指出如何通过在
WEB-INF/birt运行时中让所有内容都工作起来来稍微整理这一点的额外积分

编辑:

上面指定位置的原因是,它们与中指示的位置相匹配,当我使用Tomcat安装fritz来模拟这一点时,一切似乎都正常工作。如果我可以简单地将zip覆盖到WEB-INF/birt运行时中,然后适当地设置引擎配置,这将是理想的,但我还没有发现它可以工作

例如:


更新:重读这个问题时,我意识到我漏掉了测试项目的子目录,所以它当然对我有用,对此我很抱歉

据我所知,waroverlay或dependency插件中都不存在将工件的子文件夹解包到目录并排除路径的父元素的机制,它们都将为您提供完整的相对路径

但是,您可以使用“解包”目标将存档解包到临时文件夹,然后使用将所需的子文件夹复制到其最终存放位置

下面的配置可以做到这一点(我还没有对此进行测试,因此如果有任何遗漏,请道歉,请参阅文档了解确切的细节)。请注意,执行处于同一阶段,但只要在antrun插件之前配置依赖插件,它就会首先执行。注意,prepare包是Maven 2.1的新版本,如果您使用的是旧版本,则需要使用另一个阶段

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-lib</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>jar</type>
            <overWrite>false</overWrite>
          </artifactItem>
        </artifactItems>
        <!--unpack all three folders to the temporary location-->
        <includes>ReportEngine/lib/*,ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
        <outputDirectory>${project.build.directory}/temp-unpack</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
      </configuration>
    </execution>
  </executions>
</plugin>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <configuration>
          <tasks>
            <!--now copy the configuration and plugin sub-folders to WEB-INf/platform-->
            <copy todir="${project.build.directory}/WEB-INF/platform">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/configuration"/>
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/plugins"/>
            </copy>
            <!--copy the lib sub-folder to WEB-INf/lib-->
            <copy todir="${project.build.directory}/WEB-INF/lib">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/lib"/>
            </copy>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

org.apache.maven.plugins
maven依赖插件
解包库
准备包装
打开
org.eclipse.birt
报告引擎
2.3.2
罐子
假的
ReportEngine/lib/*,ReportEngine/configuration/*,ReportEngine/plugins/*
${project.build.directory}/temp解包
假的
maven antrun插件
准备包装
跑

不是真的回答我自己的问题,而是回答上面的富商:)

为了让它与
mvn依赖项一起工作:unpack
,文档说要将它从执行节点中取出。不确定这是否是结果的原因,但这最终导致

WEB-INF/lib/ReportEngine/lib
WEB-INF/platform/ReportEngine/configuration
WEB-INF/platform/ReportEngine/plugins
基本上与我最初的war插件尝试相同。 我在文件中没有看到任何关于Dependency解包帮助的内容。我会再试一次tmrw

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>

      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/lib</outputDirectory>
            <includes>ReportEngine/lib/*</includes>
          </artifactItem>

          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/platform</outputDirectory>
            <includes>ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
          </artifactItem>
        </artifactItems>
      </configuration>
</plugin>

org.apache.maven.plugins
maven依赖插件
org.eclipse.birt
报告引擎
2.3.2
拉链
假的
${project.build.directory}/WEB-INF/lib
报表引擎/lib/*
org.eclipse.birt
报告引擎
2.3.2
拉链
假的
${project.build.directory}/WEB-INF/platform
ReportEngine/configuration/*,ReportEngine/plugins/*

OK<如果它对您有效,我需要了解为什么我不能在这方面继续下去。这有点麻烦,现在正在起作用:)感谢我在运行2.0.9时使用了生成资源阶段,并且与m2eclipse()集成时出现了一些问题。改天我将了解如何说服m2eclipse/WTP在Tomcat发布的元数据场景中使用这些文件。您可以使用这些详细信息编辑您的问题,而不是将它们放在答案中。我已经更新了我的答案,希望不能真正解决你的问题。很抱歉误读了问题,浪费了你的时间。
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-lib</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>jar</type>
            <overWrite>false</overWrite>
          </artifactItem>
        </artifactItems>
        <!--unpack all three folders to the temporary location-->
        <includes>ReportEngine/lib/*,ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
        <outputDirectory>${project.build.directory}/temp-unpack</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
      </configuration>
    </execution>
  </executions>
</plugin>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <configuration>
          <tasks>
            <!--now copy the configuration and plugin sub-folders to WEB-INf/platform-->
            <copy todir="${project.build.directory}/WEB-INF/platform">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/configuration"/>
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/plugins"/>
            </copy>
            <!--copy the lib sub-folder to WEB-INf/lib-->
            <copy todir="${project.build.directory}/WEB-INF/lib">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/lib"/>
            </copy>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
WEB-INF/lib/ReportEngine/lib
WEB-INF/platform/ReportEngine/configuration
WEB-INF/platform/ReportEngine/plugins
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>

      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/lib</outputDirectory>
            <includes>ReportEngine/lib/*</includes>
          </artifactItem>

          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/platform</outputDirectory>
            <includes>ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
          </artifactItem>
        </artifactItems>
      </configuration>
</plugin>