Maven:如何仅复制/覆盖与源不同的文件,而不是整个目录?

时间:2018-10-15 20:34:56

标签: maven maven-resources-plugin

在Spring-Boot / Angular 5项目中,由于我们在要替换的js中修复的处理弹出窗口路由中的错误,我需要替换Angular路由器的核心库文件(router.js)。 node_modules目录。

在项目的根目录中,我创建了一个包含此修补程序的目录:

├── patch
│   └── node_modules
│       └── @angular
│           └── router
│               └── esm5
│                   └── router.js

,我需要在实际的 node_modules 目录中将其替换:

node_modules/
└── @angular
    └── router
        └── esm5
            └── router.js

这是我正在使用的pom的一部分:

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
         <version>${maven-resources-plugin.version}</version>
         <executions>
            <execution>
               <id>patch-angular-node-modules</id>
               <phase>package</phase>
               <goals>
                  <goal>copy-resources</goal>
               </goals>
               <configuration>
                  <overwrite>true</overwrite>
                  <outputDirectory>node_modules/</outputDirectory>
                  <resources>
                     <resource>
                        <directory>patch/node_modules/</directory>
                        <includes>
                           <include>**/*.js</include>
                        </includes>
                     </resource>
                  </resources>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</build>

除了将整个 node_modules 目录替换为 patch / node_modules 的目录,而不是仅仅替换patch / node_modules中的文件之外,它几乎可以正常工作,而不会删除补丁下不存在的文件/目录。

我该如何实现?

0 个答案:

没有答案