5

我正在使用 maven 插件minify-maven-plugin来缩小我的前端项目。当我将 dos 框转到前端项目并执行时,这工作正常,mvn clean install但是当我mvn clean install在反应器项目的主 pom 中执行时,我得到以下异常:

无法在项目 my.project-frontend 上执行目标 com.samaxes.maven:minify-maven-plugin:1.7.4:minify (default-minify):执行目标 com.samaxes.maven:minify-maven-的默认-minify插件:1.7.4:缩小失败:basedir ./src/main/resources/public/app/。不存在

有谁知道该怎么做才能完成这项工作?

在相关插件配置下方:

<!-- minify plugin -->
    <plugin>
        <groupId>com.samaxes.maven</groupId>
        <artifactId>minify-maven-plugin</artifactId>
        <version>1.7.4</version>
        <executions>
          <execution>
            <id>default-minify</id>
            <phase>prepare-package</phase><!-- When omitted defaults to 'process-resources' -->
            <configuration>
              <charset>UTF-8</charset>
              <skipMerge>true</skipMerge>
              <nosuffix>true</nosuffix>
              <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel>
              <webappSourceDir>src/main/resources/public/app</webappSourceDir>
              <webappTargetDir>${project.build.outputDirectory}/public/app</webappTargetDir>

              <cssSourceDir>./</cssSourceDir>
              <cssSourceIncludes>
                <cssSourceInclude>**/*.css</cssSourceInclude>
              </cssSourceIncludes>

              <jsSourceDir>./</jsSourceDir>
              <jsSourceIncludes>
                <jsSourceInclude>**/*.js</jsSourceInclude>
              </jsSourceIncludes>

              <jsEngine>CLOSURE</jsEngine>
            </configuration>
            <goals>
              <goal>minify</goal>
            </goals>
          </execution>
        </executions>
    </plugin>
 <!-- minify plugin end -->
4

2 回答 2

7

我能够通过更改下面的配置条目来重现您的问题并修复它

<webappSourceDir>src/main/resources/public/app</webappSourceDir>

<webappSourceDir>${project.basedir}/src/main/resources/public/app</webappSourceDir>

也就是说,添加标准${project.basedir}属性作为前缀。

这样,从模块本身以及父模块(反应器/聚合器构建)构建成功。

由于这个前缀,reactor 构建将正确解析路径,在构建期间指向当前的基本目录(相关模块之一)。


来自官方Maven Builder 模型文档

{project.basedir}包含pom.xml文件的目录

因此,reactor 构建将替换每个模块的此属性,指向包含模块pom.xml文件的目录(因此,模块的目录)。当直接从模块执行构建时,它也将正常工作,显然指向当前目录。

另请注意:${basedir}也可以使用,但不赞成使用project.basedir,因此最好使用后者。

于 2016-04-02T21:14:39.103 回答
0

您可以缩小为:

<plugin>
            <groupId>com.samaxes.maven</groupId>
            <artifactId>minify-maven-plugin</artifactId>
            <version>1.7.4</version>
            <executions>
               <execution>
                  <id>minify-css</id>
                  <configuration>
                     <charset>utf-8</charset>
                     <skipMerge>true</skipMerge>
                     <statistics>true</statistics>
                     <cssSourceDir>css</cssSourceDir>
                     <cssTargetDir>css/min</cssTargetDir>
                     <cssSourceIncludes>
                        <cssSourceInclude>*.css</cssSourceInclude>
                     </cssSourceIncludes>
                  </configuration>
                  <goals>
                     <goal>minify</goal>
                  </goals>
               </execution>
               <execution>
                  <id>minify-js-cfl</id>
                  <configuration>
                     <charset>utf-8</charset>
                     <skipMerge>true</skipMerge>
                     <statistics>true</statistics>
                     <jsSourceDir>js/xyz/modules/cfl</jsSourceDir>
                     <jsTargetDir>js/xyz/modules/cfl/min</jsTargetDir>
                     <jsSourceIncludes>
                        <jsSourceInclude>*.js</jsSourceInclude>
                     </jsSourceIncludes>
                  </configuration>
                  <goals>
                     <goal>minify</goal>
                  </goals>
               </execution>
               <execution>
于 2016-05-31T16:16:07.643 回答