2016-01-13 25 views
9

Będę używał zależności maven com.samaxes.maven # minify-maven-plugin, aby zminimalizować mój projekt frontendu. Ten frontend-projekt jest pakowany do słoika (archiwum Java) - więc nie mam pliku wojny, ponieważ używam Spring boot.Umieść zminimalizowane pliki w słoju

Przy konfiguracji u dołu * .min.js i pliki * .min.css są generowane, ale nie są pakowane do pliku jar. Czytałem niektóre wątki i próbowałem czegoś, ale bez powodzenia: w pliku JAR wciąż są nieskasowane pliki css i js.

Czy ktoś ma podpowiedź co mogę zrobić. Mam dużo plików css i js w moim projekcie w różnych strukturach folderów, a zminimalizowane pliki powinny być umieszczone w tym samym miejscu, co pliki niezminiaturowane.

<build> 
<plugins> 
    <plugin> 
    <groupId>com.samaxes.maven</groupId> 
    <artifactId>minify-maven-plugin</artifactId> 
    <version>1.7.4</version> 
    <executions> 
     <execution> 
     <id>default-minify</id> 
     <phase>package</phase> 
     <configuration> 
      <charset>UTF-8</charset> 
      <skipMerge>true</skipMerge> 
      <nosuffix>true</nosuffix> 
      <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel> 
      <webappSourceDir>src/main/resources</webappSourceDir> 
      <cssSourceDir>./</cssSourceDir> 
      <cssTargetDir>./minified</cssTargetDir> 
      <cssSourceIncludes> 
      <cssSourceInclude>**/*.css</cssSourceInclude> 
      </cssSourceIncludes> 
      <cssSourceExcludes> 
      <cssSourceExclude>**/*.min.css</cssSourceExclude> 
      </cssSourceExcludes> 
      <jsSourceIncludes> 
      <jsSourceInclude>**/*.js</jsSourceInclude> 
      </jsSourceIncludes> 
      <jsSourceExcludes> 
      <jsSourceExclude>**/*.min.js</jsSourceExclude> 
      </jsSourceExcludes> 
      <jsEngine>CLOSURE</jsEngine> 
     </configuration> 
     <goals> 
      <goal>minify</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

[EDIT]

mam edit plugin Maven w ten sposób. Naprawdę muszę użyć src/main/recoures - to specyfikacja w naszym projekcie.

Mój problem jest teraz, że pliki w różnych folderach unter pod główną ścieżkę folderu publiczny/app są minified ALE foldery z plikami minified są na tym samym poziomie niż mój folder publicznego jest.

Więc muszę coś takiego:

<webappTargetDir>**public/app/**${project.build.outputDirectory}</webappTargetDir> 

Czy istnieje możliwość, aby zrobić to w ten sposób?

<build> 
<plugins> 
    <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> 
      <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel> 
      <webappSourceDir>src/main/resources/public/app</webappSourceDir> 
      <webappTargetDir>${project.build.outputDirectory}</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> 

Z Minify-maven-plugin konfiguracji powyżej otrzymuję następującą strukturę folderów po lewej stronie, ale musiałbym strukturę folderów na rigth stronie. Czy jest taka możliwość?

Current and needed folder structure

+0

najpierw trzeba zmienić fazę wtyczki minify do 'przygotować-package' ponadto nie należy użyj 'src/main/resources' i zmień' webappTargetDir' na '$ {project.build.outputDirectory}' (folder target/classes) ...... Jeśli używasz folderu 'src/main/resources', który jest kopiowany w fazie zasobów do 'target/classes', które tak naprawdę nie jest tym, czego potrzebujesz .... – khmarbaise

+0

Dziękuję za reakcję. czy istnieje możliwość umieszczenia zminimalizowanych plików w oryginalnej ścieżce pliku? Wielkie dzięki! – quma

+1

Co jeśli wypróbujesz ' $ {project.build.outputDirectory}/public/app'? – Tunaki

Odpowiedz

8

Pliki są kopiowane stosunkowo od webappSourceDir do webappTargetDir. Jeśli chcesz, aby struktura się zgadzała, powinieneś użyć podobnych wzorów. Znaczenie, powinien on być

<webappSourceDir>src/main/resources</webappSourceDir> 
<webappTargetDir>${project.build.outputDirectory}</webappTargetDir> 

lub

<webappSourceDir>src/main/resources/public/app</webappSourceDir> 
<webappTargetDir>${project.build.outputDirectory}/public/app</webappTargetDir> 

jakie popełnił przykładu roboczego here

+0

Wielkie dzięki! Mam jeszcze jedno pytanie. Jak mogę zapobiec pakowaniu niezmineralizowanych plików w słoik. – quma

+0

Jeśli mają taką samą nazwę, zostaną przepisane przez minifier. Jeśli mają one inną nazwę, należy wykluczyć je za pomocą zwykłego mechanizmu wykluczania zasobów: https://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html. –