如何在maven中构建特定文件夹?

时间:2012-03-12 09:12:59

标签: java maven

我有一个文件夹myApp1和pom.xml位于myApp1中。这是myApp1

的雇佣关系
myAppl1
  |--src
       |--main
             |--java 
               (Java Source Code)
             |--resources
               some xml files and doc files 
  |--pom.xml

现在,如果我做mvn包,它会构建所有文件夹并生成jar文件(基本上它也将所有文件放在jar文件中的resources文件夹下)。

我想要的是只在java文件夹下构建文件,这些文件对资源文件夹没有任何依赖性(POM文件中提到的java文件依赖项是存储库中的jar文件。)

我不确定如何在maven中构建特定文件夹。我试过这个mvn install -pl src \ main \ java -am但是说无法在反应堆中找到所选项目?

编辑这是我在

之前把它放在pom.xml中的方式
<pluginManagement>
   <plugins>
<plugin> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>${maven-jar-plugin.version}</version> 
        <configuration> 
            <verbose>true</verbose> 
            <excludes> 
                <exclude>resources/*</exclude> 
                <exclude>webapp/*</exclude>                     
            </excludes> 
        </configuration> 
</plugin> 
</plugins>
 </pluginManagement>

但我得到[错误]格式错误的POM C:\ myProject \ pom.xml:无法识别的标签:'pluginMana gement'(位置:START_TAG见过...... \ r \ n \ r \ n ...... @ 55:21)@ C:\ myProject \ pom.xml,第55行,第21栏 - &gt; [帮助2]

4 个答案:

答案 0 :(得分:2)

您必须使用maven-jar-plugin并将其配置为排除您不希望将其包含在JAR中的文件或目录。另外,请查看Maven网站上的usage。以下是maven-jar-plugin的示例配置:

    <build>
    ...
    <plugins>
    ...
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${maven-jar-plugin.version}</version>
            <configuration>
                <verbose>true</verbose>
                <excludes>
                    <exclude>properties</exclude>
                    <exclude>properties/*</exclude>
                    <exclude>spring</exclude>
                    <exclude>spring/*</exclude>
                    <exclude>logback.xml</exclude>
                </excludes>
            </configuration>
        </plugin>
     ...
     </plugins>
     ...
     </build>

答案 1 :(得分:2)

您必须将 maven-jar-plugin 声明放在&lt;构建&gt; 部分而不是&lt; pluginManagement&gt;

答案 2 :(得分:2)

这将是一个“不要这样做”的答案。

Maven希望资源成为必须在工件中结束的文件,这就是资源的用途。如果你有其他文件,他们真的应该放在其他地方。

话虽如此,有可能混淆每个人都期待传统行为,并告诉maven src / main / resources中的文件实际上不是资源。

要在POM构建部分中说明

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <excludes>
      <exclude>**/*</exclude>
    </excludes>
  </resource>
</resources>    

资源复制由maven resources plugin处理,因此其文档值得查看与资源相关的问题。

答案 3 :(得分:1)

对于不应复制到工件文件中的文件,可以使用项目src / main / config目录,该目录也满足maven命名约定。

在我的特殊情况下,我使用此目录存储二进制源,如.exe文件aso。由程序集插件压缩并作为zip和bin部署到我的存储库,它运行良好,看起来像一个干净的工作流程。