2013-03-20 37 views
2

通过Maven我试图创建两个单独的罐子在每个(32位和64位)不同的DLL,但该DLL必须结束与相同的名称在根罐。 我可以创建单独的jar没有问题,但似乎无法找到重命名文件的方法。Maven重命名文件打包到一个罐子

我试过把文件放在不同的目录下,将它们复制到目标文件,然后建立罐子。但是因为把它们放在不同的目录中,它们不会在jar的根部结束。

我需要这个,因为我正在创建一个Applet并使用Java Web Start进行部署。 dll需要位于不同的架构中,并针对不同的体系结构,并且需要位于jar根据JNLP规范的根目录 。

开始位置:

\src 
    \main 
     \resources 
      rxtxSerial32.dll 
      rxtxSerial64.dll 

期望的最终位置:

native-dll-32.jar 
    rxtxSerial.dll (the 32 bit version) 

native-dll-64.jar 
    rxtxSerial.dll (the 64 bit version) 

为了让我使用maven-JAR-插件

  <plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <executions> 
       <execution> 
       <id>native-dll-64</id> 
       <goals><goal>jar</goal></goals> 
       <phase>package</phase> 
       <configuration> 
        <classifier>native-dll-64</classifier> 
        <includes> 
        <include>**/rxtxSerial64.dll</include> 
        </includes> 
       </configuration> 
       </execution> 
      </executions> 
     </plugin> 

任何帮助独立罐子不胜感激。也许我需要一个全新的startegy?

+0

您可以使用Maven-Ant-Plugin重命名该文件,查看Ant的移动任务http://ant.apache.org/manual/Tasks/move.html – 2013-03-20 13:28:01

回答

1

我建议你为这些创建两个项目,因为你想结束两个jar文件。如果项目在构建中共享通用功能,则可以将其放入父POM文件中。

从一个项目中生成多个jar文件会导致大多数情况下出现问题 - 我通常会尽量避免这种情况。一个项目 - 一个神器,遵循这个规则已经帮了我几次。

+0

谢谢 - 这确实是最简单的答案。我现在有两个独立的项目,它们在src/main/resources中包含了自己特定的dll,并且毫不奇怪,现在我最终得到了两个带有正确内容的独立jar。我会牢记你的“来自一个项目的多个罐子”对未来的评论。 – mdjja 2013-03-20 16:02:19

+0

很高兴听到这对你有用。如果它对你有帮助,欢迎自己上传和/或接受我的回答。 – nwinkler 2013-03-20 16:05:08