<?xml version="1.0" encoding="UTF-8"?> | |||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||||
<modelVersion>4.0.0</modelVersion> | |||||
<parent> | |||||
<groupId>com.vaadin</groupId> | |||||
<artifactId>vaadin-root</artifactId> | |||||
<version>7.7-SNAPSHOT</version> | |||||
</parent> | |||||
<groupId>com.vaadin</groupId> | |||||
<artifactId>vaadin-buildhelpers</artifactId> | |||||
<name>vaadin-buildhelpers</name> | |||||
<packaging>jar</packaging> | |||||
<url>https://vaadin.com/</url> | |||||
<description>Vaadin build helpers</description> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>commons-io</groupId> | |||||
<artifactId>commons-io</artifactId> | |||||
<version>${commons-io.version}</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>commons-cli</groupId> | |||||
<artifactId>commons-cli</artifactId> | |||||
<version>1.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.vaadin</groupId> | |||||
<artifactId>vaadin-sass-compiler</artifactId> | |||||
<version>${vaadin.sass.version}</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.carrotsearch</groupId> | |||||
<artifactId>smartsprites</artifactId> | |||||
<version>0.2.10</version> | |||||
</dependency> | |||||
</dependencies> | |||||
<build> | |||||
<plugins> | |||||
<plugin> | |||||
<groupId>org.apache.maven.plugins</groupId> | |||||
<artifactId>maven-checkstyle-plugin</artifactId> | |||||
<executions> | |||||
<execution> | |||||
<goals> | |||||
<goal>checkstyle</goal> | |||||
</goals> | |||||
<phase>process-sources</phase> | |||||
</execution> | |||||
</executions> | |||||
</plugin> | |||||
<plugin> | |||||
<groupId>org.apache.maven.plugins</groupId> | |||||
<artifactId>maven-jar-plugin</artifactId> | |||||
<configuration> | |||||
<archive> | |||||
<index>false</index> | |||||
<manifest> | |||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries> | |||||
</manifest> | |||||
</archive> | |||||
</configuration> | |||||
</plugin> | |||||
<plugin> | |||||
<artifactId>maven-deploy-plugin</artifactId> | |||||
<configuration> | |||||
<skip>true</skip> | |||||
</configuration> | |||||
</plugin> | |||||
</plugins> | |||||
<!-- Skip sources jar --> | |||||
<pluginManagement> | |||||
<plugins> | |||||
<plugin> | |||||
<artifactId>maven-source-plugin</artifactId> | |||||
<configuration> | |||||
<skipSource>true</skipSource> | |||||
</configuration> | |||||
</plugin> | |||||
<plugin> | |||||
<groupId>org.sonatype.plugins</groupId> | |||||
<artifactId>nexus-staging-maven-plugin</artifactId> | |||||
<configuration> | |||||
<skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo> | |||||
</configuration> | |||||
</plugin> | |||||
</plugins> | |||||
</pluginManagement> | |||||
</build> | |||||
</project> |
/* | |||||
* Copyright 2000-2021 Vaadin Ltd. | |||||
* | |||||
* Licensed under the Commercial Vaadin Developer License version 4.0 (CVDLv4); | |||||
* you may not use this file except in compliance with the License. You may obtain | |||||
* a copy of the License at | |||||
* | |||||
* https://vaadin.com/license/cvdl-4.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||||
* License for the specific language governing permissions and limitations under | |||||
* the License. | |||||
*/ | |||||
package com.vaadin.buildhelpers; | |||||
import java.io.BufferedWriter; | |||||
import java.io.File; | |||||
import java.io.FileNotFoundException; | |||||
import java.io.FileWriter; | |||||
import java.io.IOException; | |||||
import org.apache.commons.cli.CommandLine; | |||||
import org.apache.commons.cli.CommandLineParser; | |||||
import org.apache.commons.cli.HelpFormatter; | |||||
import org.apache.commons.cli.Options; | |||||
import org.apache.commons.cli.ParseException; | |||||
import org.apache.commons.cli.PosixParser; | |||||
import com.vaadin.sass.internal.ScssStylesheet; | |||||
/** | |||||
* Helper to combine css divided into separate per component dirs into one to | |||||
* optimize http requests. | |||||
*/ | |||||
public class CompileTheme { | |||||
/** | |||||
* @param args | |||||
* @throws IOException | |||||
* @throws ParseException | |||||
*/ | |||||
public static void main(String[] args) throws IOException, ParseException { | |||||
Options options = new Options(); | |||||
options.addOption("t", "theme", true, "the theme to compile"); | |||||
options.addOption("f", "theme-folder", true, | |||||
"the folder containing the theme"); | |||||
options.addOption("v", "version", true, | |||||
"the Vaadin version to compile for"); | |||||
CommandLineParser parser = new PosixParser(); | |||||
CommandLine params = parser.parse(options, args); | |||||
if (!params.hasOption("theme") || !params.hasOption("theme-folder") | |||||
|| !params.hasOption("version")) { | |||||
// automatically generate the help statement | |||||
HelpFormatter formatter = new HelpFormatter(); | |||||
formatter.printHelp(CompileTheme.class.getName(), options); | |||||
return; | |||||
} | |||||
String themeName = params.getOptionValue("theme"); | |||||
String themeFolder = params.getOptionValue("theme-folder"); | |||||
String version = params.getOptionValue("version"); | |||||
// Regular theme | |||||
try { | |||||
processSassTheme(themeFolder, themeName, "styles", version); | |||||
System.out.println( | |||||
"Compiling theme " + themeName + " styles successful"); | |||||
} catch (Exception e) { | |||||
System.err | |||||
.println("Compiling theme " + themeName + " styles failed"); | |||||
e.printStackTrace(); | |||||
} | |||||
// Legacy theme w/o .themename{} wrapping | |||||
try { | |||||
String legacyFile = themeFolder + File.separator + themeName | |||||
+ File.separator + "legacy-styles.scss"; | |||||
if (new File(legacyFile).exists()) { | |||||
processSassTheme(themeFolder, themeName, "legacy-styles", | |||||
version); | |||||
System.out.println("Compiling theme " + themeName | |||||
+ " legacy-styles successful"); | |||||
} | |||||
} catch (Exception e) { | |||||
System.err.println( | |||||
"Compiling theme " + themeName + " legacy-styles failed"); | |||||
e.printStackTrace(); | |||||
} | |||||
} | |||||
private static void processSassTheme(String themeFolder, String themeName, | |||||
String variant, String version) throws Exception { | |||||
StringBuffer cssHeader = new StringBuffer(); | |||||
String stylesCssDir = themeFolder + File.separator + themeName | |||||
+ File.separator; | |||||
String stylesCssName = stylesCssDir + variant + ".css"; | |||||
// Process as SASS file | |||||
String sassFile = stylesCssDir + variant + ".scss"; | |||||
ScssStylesheet scss = ScssStylesheet.get(sassFile); | |||||
if (scss == null) { | |||||
throw new IllegalArgumentException( | |||||
"SASS file: " + sassFile + " not found"); | |||||
} | |||||
scss.compile(); | |||||
String filteredScss = scss.printState().replace("@version@", version); | |||||
BufferedWriter out = new BufferedWriter(new FileWriter(stylesCssName)); | |||||
out.write(cssHeader.toString()); | |||||
out.write(filteredScss); | |||||
out.close(); | |||||
System.out.println("Compiled CSS to " + stylesCssName + " (" | |||||
+ filteredScss.length() + " bytes)"); | |||||
createSprites(themeFolder, themeName); | |||||
File oldCss = new File(stylesCssName); | |||||
File newCss = new File(stylesCssDir + variant + "-sprite.css"); | |||||
if (newCss.exists()) { | |||||
// Theme contained sprites. Renamed "styles-sprite.css" -> | |||||
// "styles.css" | |||||
oldCss.delete(); | |||||
boolean ok = newCss.renameTo(oldCss); | |||||
if (!ok) { | |||||
throw new RuntimeException( | |||||
"Rename " + newCss + " -> " + oldCss + " failed"); | |||||
} | |||||
} | |||||
} | |||||
private static void createSprites(String themeFolder, String themeName) | |||||
throws FileNotFoundException, IOException { | |||||
try { | |||||
// Try loading the class separately from using it to avoid | |||||
// hiding other classpath issues | |||||
Class<?> smartSpritesClass = org.carrot2.labs.smartsprites.SmartSprites.class; | |||||
} catch (NoClassDefFoundError e) { | |||||
System.err.println( | |||||
"Could not find smartsprites. No sprites were generated. The theme should still work."); | |||||
return; | |||||
} | |||||
String[] parameters = new String[] { "--sprite-png-depth", "AUTO", | |||||
"--css-file-suffix", "-sprite", "--css-file-encoding", "UTF-8", | |||||
"--root-dir-path", themeFolder + File.separator + themeName, | |||||
"--log-level", "WARN" }; | |||||
org.carrot2.labs.smartsprites.SmartSprites.main(parameters); | |||||
System.out.println("Generated sprites"); | |||||
} | |||||
} |
/* | |||||
* Copyright 2000-2021 Vaadin Ltd. | |||||
* | |||||
* Licensed under the Commercial Vaadin Developer License version 4.0 (CVDLv4); | |||||
* you may not use this file except in compliance with the License. You may obtain | |||||
* a copy of the License at | |||||
* | |||||
* https://vaadin.com/license/cvdl-4.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||||
* License for the specific language governing permissions and limitations under | |||||
* the License. | |||||
*/ | |||||
package com.vaadin.buildhelpers; | |||||
import java.io.IOException; | |||||
import java.util.ArrayList; | |||||
import java.util.Arrays; | |||||
import java.util.Enumeration; | |||||
import java.util.HashSet; | |||||
import java.util.List; | |||||
import java.util.jar.Attributes; | |||||
import java.util.jar.JarEntry; | |||||
import java.util.jar.JarFile; | |||||
import java.util.jar.Manifest; | |||||
import java.util.logging.Logger; | |||||
import java.util.regex.Pattern; | |||||
/** | |||||
* Generates Export-Packages attribute for OSGi compatible manifest. | |||||
* <p> | |||||
* Reads the included Java packages in a jar file, generates a corresponding | |||||
* Export-Package attribute, and appends it to the jar's MANIFEST.MF. | |||||
* <p> | |||||
* See #3521 for details. | |||||
* | |||||
* @author magi | |||||
*/ | |||||
public class GeneratePackageExports { | |||||
private static final String EXPORT_PACKAGE_ATTRIBUTE = "Export-Package"; | |||||
public static void main(String[] args) { | |||||
if (args.length < 2) { | |||||
System.err.println("Invalid number of parameters\n" | |||||
+ "Usage: java -cp .. GenerateManifest <package.jar> <accepted package prefixes>\n" | |||||
+ "Use -Dvaadin.version to specify the version to be used for the packages\n" | |||||
+ "Use -DincludeNumberPackages=1 to include package names which start with a number (not 100% OSGi compatible)"); | |||||
System.exit(1); | |||||
} | |||||
// Open the JAR | |||||
String jarFilename = args[0]; | |||||
JarFile jar = null; | |||||
try { | |||||
jar = new JarFile(jarFilename); | |||||
} catch (IOException e) { | |||||
System.err.println("Unable to open JAR '" + jarFilename + "'"); | |||||
System.exit(1); | |||||
} | |||||
// Accepted packages | |||||
List<String> acceptedPackagePrefixes = new ArrayList<String>(); | |||||
for (int i = 1; i < args.length; i++) { | |||||
acceptedPackagePrefixes.add(args[i]); | |||||
} | |||||
boolean includeNumberPackages = false; | |||||
if ("1".equals(System.getProperty("includeNumberPackages"))) { | |||||
includeNumberPackages = true; | |||||
} | |||||
// List the included Java packages | |||||
HashSet<String> packages = getPackages(jar, acceptedPackagePrefixes, | |||||
includeNumberPackages); | |||||
// Avoid writing empty Export-Package attribute | |||||
if (packages.isEmpty()) { | |||||
return; | |||||
} | |||||
String exportPackage = sortAndJoinPackages(packages); | |||||
// Read old manifest | |||||
Manifest oldMF = null; | |||||
try { | |||||
oldMF = jar.getManifest(); | |||||
} catch (IOException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
Attributes mainAttributes = oldMF.getMainAttributes(); | |||||
String existingExportPackage = mainAttributes | |||||
.getValue(EXPORT_PACKAGE_ATTRIBUTE); | |||||
if (existingExportPackage != null) { | |||||
exportPackage = existingExportPackage + "," + exportPackage; | |||||
} | |||||
// Jar must be closed before updating it below, as it's | |||||
// locked in Windows until closed. (#6045) | |||||
try { | |||||
jar.close(); | |||||
} catch (IOException e) { | |||||
System.err.println("Unable to close JAR '" + jarFilename + "'"); | |||||
} | |||||
// Create the modified manifest | |||||
ManifestWriter manifest = new ManifestWriter(); | |||||
manifest.writeAttribute(EXPORT_PACKAGE_ATTRIBUTE, exportPackage); | |||||
// Update the manifest in the Jar. The jar must be closed | |||||
// before this is done. | |||||
int status = manifest.updateJar(jarFilename); | |||||
if (status != 0) { | |||||
System.exit(status); | |||||
} | |||||
} | |||||
private static String sortAndJoinPackages(HashSet<String> packages) { | |||||
// Produce an ordered listing of the package names | |||||
String packageArray[] = new String[packages.size()]; | |||||
packages.toArray(packageArray); | |||||
Arrays.sort(packageArray); | |||||
StringBuilder joinedPackages = new StringBuilder(); | |||||
for (int i = 0; i < packageArray.length; i++) { | |||||
if (i != 0) { | |||||
joinedPackages.append(","); | |||||
} | |||||
String version = getVersion(packageArray[i]); | |||||
String packageAndVersion = packageArray[i]; | |||||
if (version != null) { | |||||
packageAndVersion += ";version=\"" + version + "\""; | |||||
} else { | |||||
Logger.getLogger(GeneratePackageExports.class.getName()) | |||||
.severe("No version defined for " + packageArray[i]); | |||||
} | |||||
joinedPackages.append(packageAndVersion); | |||||
} | |||||
return joinedPackages.toString(); | |||||
} | |||||
/** | |||||
* Tries to find version specified using system properties of type | |||||
* version.<java package>. Searches for the packge and then its parents | |||||
* recursively. Falls back to the "vaadin.version" system property if no | |||||
* other properties are found. | |||||
* | |||||
* @param javaPackage | |||||
* The package to determine a version for | |||||
* @return A version or null if no version has been defined | |||||
*/ | |||||
private static String getVersion(String javaPackage) { | |||||
String packageVersion = System.getProperty("version." + javaPackage); | |||||
if (packageVersion != null) { | |||||
return packageVersion; | |||||
} | |||||
String parentPackage = null; | |||||
if (javaPackage.contains(".")) { | |||||
parentPackage = javaPackage.substring(0, | |||||
javaPackage.lastIndexOf('.')); | |||||
String parentVersion = getVersion(parentPackage); | |||||
if (parentVersion != null) { | |||||
return parentVersion; | |||||
} | |||||
} | |||||
String vaadinVersion = System.getProperty("vaadin.version"); | |||||
if (vaadinVersion != null) { | |||||
return vaadinVersion; | |||||
} | |||||
return null; | |||||
} | |||||
private static HashSet<String> getPackages(JarFile jar, | |||||
List<String> acceptedPackagePrefixes, | |||||
boolean includeNumberPackages) { | |||||
HashSet<String> packages = new HashSet<String>(); | |||||
Pattern startsWithNumber = Pattern.compile("\\.\\d"); | |||||
for (Enumeration<JarEntry> it = jar.entries(); it.hasMoreElements();) { | |||||
JarEntry entry = it.nextElement(); | |||||
boolean classFile = entry.getName().endsWith(".class"); | |||||
boolean directory = entry.isDirectory(); | |||||
if (!classFile && !directory) { | |||||
continue; | |||||
} | |||||
if (!acceptEntry(entry.getName(), acceptedPackagePrefixes)) { | |||||
continue; | |||||
} | |||||
int lastSlash = entry.getName().lastIndexOf('/'); | |||||
String pkg = entry.getName().substring(0, lastSlash).replace('/', | |||||
'.'); | |||||
if (!includeNumberPackages | |||||
&& startsWithNumber.matcher(pkg).find()) { | |||||
continue; | |||||
} | |||||
packages.add(pkg); | |||||
} | |||||
return packages; | |||||
} | |||||
private static boolean acceptEntry(String name, | |||||
List<String> acceptedPackagePrefixes) { | |||||
for (String prefix : acceptedPackagePrefixes) { | |||||
if (name.startsWith(prefix)) { | |||||
return true; | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
} |
/* | |||||
* Copyright 2000-2021 Vaadin Ltd. | |||||
* | |||||
* Licensed under the Commercial Vaadin Developer License version 4.0 (CVDLv4); | |||||
* you may not use this file except in compliance with the License. You may obtain | |||||
* a copy of the License at | |||||
* | |||||
* https://vaadin.com/license/cvdl-4.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||||
* License for the specific language governing permissions and limitations under | |||||
* the License. | |||||
*/ | |||||
package com.vaadin.buildhelpers; | |||||
import java.io.BufferedReader; | |||||
import java.io.File; | |||||
import java.io.FileInputStream; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.io.InputStreamReader; | |||||
import java.util.Date; | |||||
import java.util.jar.Manifest; | |||||
public class ManifestWriter { | |||||
StringBuffer buffer = new StringBuffer(); | |||||
public ManifestWriter() { | |||||
} | |||||
/** | |||||
* Writes a manifest attribute to a temporary buffer. | |||||
* | |||||
* @param name | |||||
* Attribute name | |||||
* @param value | |||||
* Attribute value | |||||
*/ | |||||
public void writeAttribute(String name, String value) { | |||||
int linelen = name.length() + 2; | |||||
buffer.append(name); | |||||
buffer.append(": "); | |||||
String remainingValue = value; | |||||
while (linelen + remainingValue.length() > 72) { | |||||
int fitsLine = 72 - linelen; | |||||
buffer.append(remainingValue.substring(0, fitsLine) + "\n "); | |||||
remainingValue = remainingValue.substring(fitsLine); | |||||
linelen = 1; | |||||
} | |||||
buffer.append(remainingValue + "\n"); | |||||
} | |||||
/** | |||||
* Writes the manifest to given JAR file. | |||||
* | |||||
* The manifest must be created with {@code #writeAttribute(String, String)} | |||||
* before calling this write. | |||||
* | |||||
* @param jarFilename | |||||
* File name of the JAR in which the manifest is written | |||||
* @return 0 on success, nonzero value on error | |||||
*/ | |||||
int updateJar(String jarFilename) { | |||||
int status = 0; | |||||
// Determine a temporary file name | |||||
String newMfPrefix = "vaadin-manifest-" + (new Date()).getTime(); | |||||
File newMfFile = null; | |||||
try { | |||||
newMfFile = File.createTempFile(newMfPrefix, ".mf"); | |||||
} catch (IOException e) { | |||||
System.err.println("Creating temp file failed"); | |||||
status = 1; | |||||
} | |||||
// Write the manifest to the temporary file | |||||
if (status == 0) { | |||||
FileOutputStream fos = null; | |||||
try { | |||||
fos = new FileOutputStream(newMfFile); | |||||
fos.write(getBytes()); | |||||
fos.close(); | |||||
} catch (IOException e) { | |||||
System.err.println( | |||||
"Writing to file '" + newMfFile.getAbsolutePath() | |||||
+ "' failed because: " + e.getMessage()); | |||||
status = 1; | |||||
} | |||||
} | |||||
// Check that the manifest is OK | |||||
if (status == 0) { | |||||
Manifest checkMf = new Manifest(); | |||||
FileInputStream is; | |||||
try { | |||||
is = new FileInputStream(newMfFile); | |||||
checkMf.read(is); | |||||
} catch (IOException e) { | |||||
System.err.println( | |||||
"Reading from file '" + newMfFile.getAbsolutePath() | |||||
+ "' failed because: " + e.getMessage()); | |||||
status = 1; | |||||
} | |||||
} | |||||
// Update the manifest in the Jar | |||||
if (status == 0) { | |||||
System.out.println("Updating manifest in JAR " + jarFilename); | |||||
try { | |||||
// The "mf" order must correspond with manifest-jarfile order | |||||
Process process = Runtime.getRuntime() | |||||
.exec(new String[] { "jar", "umf", | |||||
newMfFile.getAbsolutePath(), jarFilename }); | |||||
int exitValue = process.waitFor(); | |||||
if (exitValue != 0) { | |||||
InputStream jarErr = process.getErrorStream(); | |||||
BufferedReader reader = new BufferedReader( | |||||
new InputStreamReader(jarErr)); | |||||
while (reader.ready()) { | |||||
System.err.println("jar: " + reader.readLine()); | |||||
} | |||||
System.err.println( | |||||
"The 'jar' command returned with exit value " | |||||
+ exitValue); | |||||
status = 1; | |||||
} | |||||
} catch (IOException e) { | |||||
System.err.println( | |||||
"Failed to execute 'jar' command. " + e.getMessage()); | |||||
status = 1; | |||||
} catch (InterruptedException e) { | |||||
System.err | |||||
.println("Execution of 'jar' command was interrupted. " | |||||
+ e.getMessage()); | |||||
status = 1; | |||||
} | |||||
} | |||||
// Remove the temporary file | |||||
if (newMfFile != null) { | |||||
newMfFile.delete(); | |||||
} | |||||
return status; | |||||
} | |||||
@Override | |||||
public String toString() { | |||||
return buffer.toString(); | |||||
} | |||||
public byte[] getBytes() { | |||||
return buffer.toString().getBytes(); | |||||
} | |||||
} |
<scope>provided</scope> | <scope>provided</scope> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>${project.groupId}</groupId> | |||||
<artifactId>vaadin-buildhelpers</artifactId> | |||||
<version>${project.version}</version> | |||||
<scope>provided</scope> | |||||
</dependency> | |||||
</dependencies> | </dependencies> | ||||
<build> | <build> | ||||
<plugins> | <plugins> | ||||
<plugin> | |||||
<groupId>org.codehaus.mojo</groupId> | |||||
<artifactId>exec-maven-plugin</artifactId> | |||||
<executions> | |||||
<execution> | |||||
<id>generate-export-package</id> | |||||
<phase>package</phase> | |||||
<goals> | |||||
<goal>exec</goal> | |||||
</goals> | |||||
<configuration> | |||||
<classpathScope>compile</classpathScope> | |||||
<executable>${java.home}/bin/java</executable> | |||||
<arguments> | |||||
<argument>-Dvaadin.version=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</argument> | |||||
<argument>-DincludeNumberPackages=1</argument> | |||||
<argument>-classpath</argument> | |||||
<classpath /> | |||||
<argument>com.vaadin.buildhelpers.GeneratePackageExports</argument> | |||||
<argument>${project.build.directory}/${project.build.finalName}.${project.packaging}</argument> | |||||
<argument>VAADIN/widgetsets</argument> | |||||
</arguments> | |||||
</configuration> | |||||
</execution> | |||||
</executions> | |||||
</plugin> | |||||
<plugin> | <plugin> | ||||
<groupId>com.vaadin</groupId> | <groupId>com.vaadin</groupId> |
</scm> | </scm> | ||||
<modules> | <modules> | ||||
<module>buildhelpers</module> | |||||
<module>shared</module> | <module>shared</module> | ||||
<module>push</module> | <module>push</module> | ||||
<module>server</module> | <module>server</module> |
<version>${project.version}</version> | <version>${project.version}</version> | ||||
<scope>provided</scope> | <scope>provided</scope> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>${project.groupId}</groupId> | |||||
<artifactId>vaadin-buildhelpers</artifactId> | |||||
<version>${project.version}</version> | |||||
<scope>provided</scope> | |||||
</dependency> | |||||
<dependency> | <dependency> | ||||
<groupId>com.vaadin</groupId> | <groupId>com.vaadin</groupId> | ||||
</arguments> | </arguments> | ||||
</configuration> | </configuration> | ||||
</execution> | </execution> | ||||
<execution> | |||||
<id>generate-export-package</id> | |||||
<phase>package</phase> | |||||
<goals> | |||||
<goal>exec</goal> | |||||
</goals> | |||||
<configuration> | |||||
<classpathScope>compile</classpathScope> | |||||
<executable>${java.home}/bin/java</executable> | |||||
<arguments> | |||||
<argument>-Dvaadin.version=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</argument> | |||||
<argument>-DincludeNumberPackages=0</argument> | |||||
<argument>-classpath</argument> | |||||
<classpath /> | |||||
<argument>com.vaadin.buildhelpers.GeneratePackageExports</argument> | |||||
<argument>${project.build.directory}/${project.build.finalName}.${project.packaging}</argument> | |||||
<argument>VAADIN/themes</argument> | |||||
</arguments> | |||||
</configuration> | |||||
</execution> | |||||
</executions> | </executions> | ||||
</plugin> | </plugin> | ||||
<scope>provided</scope> | <scope>provided</scope> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>${project.groupId}</groupId> | |||||
<artifactId>vaadin-buildhelpers</artifactId> | |||||
<version>${project.version}</version> | |||||
<scope>provided</scope> | |||||
</dependency> | |||||
</dependencies> | </dependencies> | ||||
<build> | <build> | ||||
</executions> | </executions> | ||||
</plugin> | </plugin> | ||||
<plugin> | |||||
<groupId>org.codehaus.mojo</groupId> | |||||
<artifactId>exec-maven-plugin</artifactId> | |||||
<executions> | |||||
<execution> | |||||
<id>generate-export-package</id> | |||||
<phase>package</phase> | |||||
<goals> | |||||
<goal>exec</goal> | |||||
</goals> | |||||
<configuration> | |||||
<classpathScope>compile</classpathScope> | |||||
<executable>${java.home}/bin/java</executable> | |||||
<arguments> | |||||
<argument>-Dvaadin.version=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</argument> | |||||
<argument>-DincludeNumberPackages=1</argument> | |||||
<argument>-classpath</argument> | |||||
<classpath /> | |||||
<argument>com.vaadin.buildhelpers.GeneratePackageExports</argument> | |||||
<argument>${project.build.directory}/${project.build.finalName}.${project.packaging} | |||||
</argument> | |||||
<argument>com/vaadin</argument> | |||||
</arguments> | |||||
</configuration> | |||||
</execution> | |||||
</executions> | |||||
</plugin> | |||||
<plugin> | <plugin> | ||||
<groupId>org.apache.maven.plugins</groupId> | <groupId>org.apache.maven.plugins</groupId> | ||||
<artifactId>maven-jar-plugin</artifactId> | <artifactId>maven-jar-plugin</artifactId> |