从目标目录执行Maven安装(构建)时如何删除文件

时间:2018-09-04 19:31:24

标签: java maven

我正在从目标文件夹中删除一个文件夹(api-docs)。当我执行Maven构建时,在生成目标文件夹时,它应该排除该文件夹(api-docs)。
目标包含类,代码生成器,生成源,javadoc-bundle-options,maven-archiver,maven-status,测试类和war文件。
我需要排除codegen中存在的(api-docs)
Codegen>生成源> web> api-docs(包含css,字体,图像,lang,lib,spec和其他一些js和html文件)

 <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <phase>build</phase>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                                <configuration>                                  
                                    <tasks>
                                        <delete>
                                          <fileset> dir="${project.build.outputDirectory}/target/codegen/generated-sources/web/api-docs"/>
                                        </delete>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>  
          `


我在pom.xml中添加了该内容,但无法删除。请提出
这是pom文件中构建内容的全部内容

<build> 
<pluginManagement>
<plugins>
<plugin>
<groupId>com.xxx.chassis.api.plugins</groupId>
<artifactId>codegen-maven-plugin</artifactId>
<version>${codegen.plugin.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<templateDir>chassis-archetypes</templateDir>
<configFile>${project.parent.basedir}/codegen-config.yaml</configFile>
<specifications>
<specification>${project.parent.basedir}/partnerships-originations-product-offer-id.yaml</specification>
</specifications>
<basePackage>com.xxx.papi.popoi</basePackage>
</configuration>
</plugin> 

           <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                        <execution>
                            <phase>build</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>                                  
                                <tasks>
                                    <delete>
                                      <fileset dir="${project.build.directory}/codegen/generated-sources/web/api-docs/swagger-ui.min.js"/>
                                    </delete>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>  

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${codegen.generated-sources}/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<sourcepath>${codegen.generated-sources}/java</sourcepath>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

2 个答案:

答案 0 :(得分:0)

请共享pom文件的build-> plugins部分的全部内容。不必将maven-antrun-plugin添加到pom。目标目录中的apidocs文件夹通常由可能存在于pom文件中的maven-javadoc-plugin产生。防止创建apidocs文件夹的第一种方法是从pom中删除该插件声明。另一种方法是按照以下答案提供maven.javadoc.skip参数:https://stackoverflow.com/a/9360317/7810853

答案 1 :(得分:0)

antrun-plugin的目标是run,而不是build。相应地更改pom.xml应该会有所帮助:

[...]
<goals>
  <goal>run</goal>
</goals>
[...]

您还应该仔细检查在哪个phase中创建了api-doc文件夹,并且应该在以后的阶段调用ant-plugin,例如package

[...]
<phase>package</phase>
[...]

第三点,Maven变量${project.build.outputDirectory}通常引用文件夹target/classes。请检查this answer了解更多详情。因此,您可以使用

<fileset dir="${project.basedir}/target/codegen/generated-sources/web/api-docs"/>

或-更精确-

<fileset dir="${project.build.directory}/codegen/generated-sources/web/api-docs"/>