【问题标题】:minify frontend with minify-maven-plugin使用 minify-maven-plugin 缩小前端
【发布时间】:2016-03-31 17:03:00
【问题描述】:

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

未能在项目 my.project-frontend 上执行目标 com.samaxes.maven:minify-maven-plugin:1.7.4:minify (default-minify):执行目标 com.samaxes.maven:minify 的默认-minify -maven-plugin:1.7.4:minify failed: 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 -->

【问题讨论】:

  • basedir ./src/main/resources/public/app/.不存在。这很清楚不是吗?文件夹存在吗?
  • 是的,确实存在,否则我在项目中执行mvn clean install时无法构建项目。问题一定出在reactor-项目的路径上。

标签: java maven minify multi-module maven-reactor


【解决方案1】:

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

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

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

即添加标准的${project.basedir} 属性作为前缀。

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

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


来自官方Maven Builder model documentation

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

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

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

【讨论】:

  • 非常感谢,我会测试它,然后会给你100分。
  • @user3318489 很高兴看到它对您有所帮助!因为您分配了赏金,我想这是一个很好的解决方案。在这种情况下,我还建议将其作为答案 √ 接受,这样问题就不会在统计上显示为未回答。谢谢
【解决方案2】:

你可以缩小为:

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多