我试图创建一个简单的主题(使用变色龙和一些自定义的CSS和图像等),我已经做到了。
问题是我想包起来,从其他Vaadin项目作为依赖Maven项目和参考,所以我的主题我所有的Vaadin应用同样的方式 - 甚至更好它作为父项目的依赖,使得整个应用程序被称呼同样的方式,我可以重新皮肤它针对不同的客户。
我不知道如何打包和部署主题的项目,所以,这将是从其他项目中使用? 我应该把它做成战争项目 - 但再怎么“得到它”做其他项目? 他们会寻找下自己的VAADIN /主题目录中的主题 - 而不是复制它有(不知),我怎么可能只是他们引用一个单一的副本?
我有同样的问题。 我用战争解决覆盖它。
我在这是在客户机的配置项目扩展父项目一个基本主题。 配置项目只需使用战争作为运行依赖和父项目的文件被覆盖,为解释在这里 。
只需添加在客户端的项目的依赖:
<dependency>
<groupId>com.mygroup</groupId>
<artifactId>my-parent-project</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
并导入父项目的客户端主题的styles.css的文件的样式:
@import "../parent-theme/styles.css"
并增加客户的风格。
如果您需要使用父项目的类别,你可以设置attachClasses
属性真正在Maven的战争插件配置并且还通过使用maven-源插件连接的源,如果你需要它们进行调试:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<attach>true</attach>
</configuration>
</plugin>
并且它们包括在客户的项目:
<dependency>
<groupId>com.mygroup</groupId>
<artifactId>my-parent-project</artifactId>
<version>1.0.0-SNAPSHOT</version>
<classifier>classes</classifier>
<type>jar</type>
<scope>compile</scope>
</dependency>
我想我已经找到了一种方法 - 不知道这是最好的方式,因为它复制主题CSS分成多个作战项目,而不是创建一个共享实例,但唯一的另一种方式是做一些聪明的服务器配置要共享项目的URL或者其他的东西。
http://www.ensor.cc/2011/06/mavens-war-overlay-what-are-war.html