Maven clean不会删除复制的资源

dur*_*597 5 java eclipse maven

为了让我的生活更轻松,我将我的maven配置为将我部署的应用程序放在一个不同于/deploy默认文件夹的文件夹()中(因此它不会混合classes/,surefire-reports目录等等).它工作正常,除了当我尝试运行时mvn clean,它只删除jar并复制依赖项,但不删除复制的资源.

更新它似乎被删除,但随后立即被放回.它似乎与使用Eclipse有关Build Automatically,但我不确定为什么更改Maven的配置会对Eclipse产生这种影响.结束更新

更新2目前,没有一个答案是正确的.这个问题显然与deploy目录无关; 似乎maven-resources-plugin使Eclipse复制资源成为Build Automatically的一部分.但是我不知道如何在不停止使用maven-resources-plugin的情况下关闭它,并且在不停止使用Build Automatically的情况下,我将给予能够解释如何执行此操作的人的赏金.结束更新2

无论如何,我的目录看起来像这样:

my-app
|-- pom.xml
|-- src
|   |-- main
|   |   |-- java
|   |   `-- resources
|   |       |-- script.sh
|   |       `-- config
|   |           `-- app.properties
|   `-- test
|       |-- java
|       `-- resources
`-- deploy
    |-- my-app.jar <----- This gets deleted correctly
    |-- lib        <----- This gets deleted correctly
    |   |-- dependency1.jar     <----- This gets deleted correctly
    |   |-- dependency2.jar     <----- This gets deleted correctly
    |-- config     <----- This DOES NOT get deleted correctly
    |   `-- app.properties      <----- This DOES NOT get deleted correctly
    `-- script.sh  <----- This DOES NOT get deleted correctly
Run Code Online (Sandbox Code Playgroud)

这是我的pom片段:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>${maven.jar.version}</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>my.main.Class</mainClass>
                <packageName>my.main</packageName>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
        <excludes>
            <exclude><!-- the files I don't want in my jar --></exclude>
        </excludes>
        <outputDirectory>${basedir}/deploy</outputDirectory>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.1</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/deploy/lib</outputDirectory>
                <includeScope>compile</includeScope>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>install</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/deploy</outputDirectory>
                <resources>
                    <resource>
                        <directory>${basedir}/src/main/resources</directory>
                        <filtering>false</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>deploy</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <followSymlinks>false</followSymlinks>
            </fileset>
        </filesets>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

jon*_*one 7

坚持Maven的方式并将你的deploy目录置于其下,${basedir}/target你的问题将自行解决.您也可以删除clean插件的自定义插件配置.


Ale*_*ykh 2

如果有问题how to disable eclipse to run specific plugin,您可以将其放入默认情况下处于活动状态的特定配置文件下

<project>
  ...
  <profiles>
    <profile>
      <id>not-eclipse</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
             ...
        </plugins>
      </build>
  </profile>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

并放置! not-eclipse在 eclipse 项目的配置文件设置中