2016-03-31 2 views
4

Я использую плагин maven minify-maven-plugin, чтобы минимизировать мой проект frontend. Это прекрасно работает, когда я иду через дос поле проекта во внешнем интерфейсе и выполнять mvn clean install но когда я исполню mvn clean install в главном ПОМ в моем проекте реактора, то я получаю следующее исключение:minify frontend с minify-maven-plugin

Не удалось выполнить голевые com.samaxes. maven: minify-maven-plugin: 1.7.4: minify (default-minify) в проекте my.project-frontend: Выполнение по умолчанию - минимизация цели com.samaxes.maven: minify-maven-plugin: 1.7.4: minify failed : basedir ./src/main/resources/public/app/. не exis

Кто-нибудь знает, что делать, чтобы сделать эту работу?

Ниже соответствующей конфигурации плагина:

<!-- 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 --> 
+0

* BASEDIR ./src/main/resources/public/app/. не существует*. Это ясно, нет? Существует ли папка? – Tunaki

+0

Да, он существует, иначе проект не может быть создан, когда я выполняю mvn clean install в проекте. Проблема должна заключаться в том, что касается проекта реактора. – quma

ответ

6

Я был в состоянии воспроизвести проблему и исправить ее путем изменения элемента конфигурации ниже

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

в

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

То есть, добавив стандарт ${project.basedir} свойство в качестве префикса.

При этом сборка была успешной из самого модуля, но также и от материнской (сборка реактора/агрегатора).

Благодаря этому префиксу сборка реактора будет правильно разрешать путь, указывая на текущий базовый каталог (один из соответствующего модуля) во время сборки.


От официального Maven Builder model documentation

{project.basedir} каталог, содержащий файл pom.xml

Следовательно, сборка реактора заменит это свойство для каждого модуля, указывая на каталог, содержащий модуль pom.xml файл (следовательно, каталог модуля). Он также будет работать правильно при непосредственном выполнении сборки из модуля, явно указывая на текущий каталог.

Также обратите внимание: ${basedir} также будет работать, но он устарел в пользу project.basedir, поэтому лучше использовать последний.

+0

Большое спасибо, я проверю его, а потом дам вам 100 очков. – quma

+0

@ user3318489 рад видеть, что это помогло !, так как вы назначили награду, я думаю, это было прекрасно, как решение. В этом случае я также предлагаю принять его в качестве ответа √, так что вопрос не будет статистически отображаться как без ответа. благодаря –

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>