2014-09-13 67 views
1

有人可以解释我这两个资源定义之间的区别吗?为什么jar文件被排除在外,但包含在第二个资源中?我不明白,这两个声明:这两个Maven资源定义有什么区别?

<resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <excludes> 
       <exclude>**/*.jar</exclude> 
       <exclude>myDummyPath/war/l10n/*.*</exclude> 
      </excludes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>**/*.jar</include> 
      </includes> 
     </resource> 
</resources> 
+0

@BoristheSpider为什么你消除了一个正确的标签,并在这里添加一个错误的标签?这是一个'java'问题,而XML是偶然的。 – chrylis 2014-09-13 13:21:35

+0

@chrylis对不起,我试图让语法突出显示工作 - 最终hexafraction纠正它。似乎你在语言提示中需要'language:'而不是'lang:'。 – 2014-09-13 13:23:25

+0

@chrylis啊,那不行。似乎没有'xml'标记语法突出显示不是太有帮助。 – 2014-09-13 13:26:01

回答

0

看看不同filtering设置。作者希望Maven在某些文件(可能是配置文件)中替换占位符,但不要破坏二进制jar文件。

2

第一个区别是明显的路径:

<excludes> 
    <exclude>**/*.jar</exclude> 
    <exclude>myDummyPath/war/l10n/*.*</exclude> 
</excludes> 

和:

<includes> 
    <include>**/*.jar</include> 
</includes> 

显然,第一个声明排除I10n下的所有文件.jar和一切。另一个路径包括只有.jar文件。

接下来,第一个声明启用筛选,第二个声明禁用筛选。在maven中,过滤(默认情况下)将用它们的值替换所有可变占位符${...} - 有关更多信息,请参阅the documentation

因此,在第一个声明中,除.jar文件和本地化文件之外的所有资源都通过maven替换值来替代占位符的值,例如${project.name}

在第二个声明中,所有.jar资源都被复制,而不进行过滤。

+0

你是什么意思与复制?我不明白这个 – Marwief 2014-09-13 13:38:52

+0

那么,当一个项目建成时,文件被从源代码('/ src/main /')复制到构建的制造品 - '.jar'或'.war'等等。这是一个标准的构建过程 - 如果你不知道这一点,那么你可能需要阅读[文档](http://maven.apache.org/guides/getting-started/index.html)。 – 2014-09-13 14:16:50