Чтобы обойти эту проблему, вам может понравиться что-то подобное.
(1) Поместите свой персональный код javascript в src / main / js, а не в src / main / webapp.Используйте соглашение MVN для размещения JS.* Примечание: для библиотек, которые вы включаете, например, jQuery или что-то еще, вы можете просто сбросить их в src / main / webapp, это нормально.У них уже будет свернутый JavaScript, который вы никогда не будете изменять.
(2) Настройте свой плагин YUI на (a) игнорирование JavaScript, который вы не кодировали, (b) для компиляции сжатого javascript в выходную папку.
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.5.1</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<nosuffix>true</nosuffix>
<excludes>
<exclude>**/ui-framework/**</exclude>
</excludes>
<outputDirectory>${yui.outputdir}</outputDirectory>
</configuration>
</plugin>
Итак, мы можем выполнить следующее упражнение.
mvn process-resources
└── target
├── classes
│ ├── default.logback.xml
│ └── props
│ ├── default.props
│ └── production.default.props
├── packageLinkDefs.properties
└── yui-compressed
└── jasmineDummyExample_element_mover.js
Дело в том, что YUI компилирует сжатый javascript в свою собственную папку вывода, а плагин war имеетпонятия не имею об этом.
(3) Наконец, вам просто нужно настроить свой плагин war для копирования скомпилированных источников yui.
Пока вы следуете соглашению javascript для maven, где вашjavascript должен был быть закодирован в src / main / js /, ваш плагин войны по умолчанию не будет копировать ваш javascipt (звучит странно, верно?).
По умолчанию ваш плагин war будет копировать все статические ресурсы, находящиеся в каталоге src / main / webapp.Это удобно, потому что он позволяет вам настроить плагин war для поведения по умолчанию: копировать src / main / webapp в окончательный файл war и, кроме того, копировать папку / src / target / yui-compress.Таким образом, в обеих папках нет перекрывающихся файлов, в выходном каталоге нет перезаписи файлов.
Это показано в следующем фрагменте:
$ mvn war:war
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building lift-someproject Project 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-war-plugin:2.5:war (default-cli) @ lift-someproject ---
[INFO] Packaging webapp
[INFO] Assembling webapp [lift-someproject] in [D:\scalaWorkspace\liftsomeprojectTwo\lift-someproject\target\lift-someproject]
[INFO] Processing war project
[INFO] Copying webapp webResources [D:\scalaWorkspace\liftsomeprojectTwo\lift-someproject\target\yui-compressed] to [D:\scalaWorkspace\liftsomeprojectTwo\lift-someproject\target\lift-someproject]
[INFO] Copying webapp resources [D:\scalaWorkspace\liftsomeprojectTwo\lift-someproject\src\main\webapp]
[INFO] Webapp assembled in [820 msecs]
[INFO] Building war: D:\scalaWorkspace\liftsomeprojectTwo\lift-someproject\target\lift-someproject.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.968s
[INFO] Finished at: Tue Dec 23 20:17:59 CET 2014
[INFO] Final Memory: 11M/246M
[INFO] ------------------------------------------------------------------------
Вы можете настроитьфайл war, чтобы иметь в виду специальную папку с вашими не разбитыми сжатыми файлами JS yui:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<webResources>
<resource>
<directory>${yui.outputdir}</directory>
<targetPath>js</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
Если вы используете Jetty для быстрой разработки, вам понадобится дополнительная информация об этом плагине, чтобы убедиться, чтоон находит ваш javascript, закодированный вручную, в src / main / js.
Это должно сработать.