2012-07-02 63 views
2

我試圖創建一個簡單的主題(使用變色龍和一些自定義的CSS和圖像等),我已經做到了。如何編寫Vaadin主題我可以在我的其他webapps中包含?

問題是我想把它包裝在一個Maven項目中,並將其作爲依賴關係從其他Vaadin項目中引用,所以我可以以同樣的方式將所有Vaadin應用程序作爲主題 - 甚至更好地將其作爲父項的依賴項項目,以便整個應用程序以相同的方式獲得樣式,並且我可以爲不同的客戶重新制作它。

我不知道如何打包和部署主題的項目,所以,這將是從其他項目中使用?我應該把它變成一個戰爭項目嗎?但是其他項目怎麼做呢?他們會在他們自己的VAADIN/themes目錄下尋找主題 - 而不是在那裏複製它(以某種方式),我怎麼才能讓他們引用一個副本?

回答

0

我有同樣的問題。我用戰爭疊加解決了它。

我在這是在客戶機的配置項目擴展父項目一個基本主題。配置項目只需使用戰爭作爲運行依賴和父項目的文件被覆蓋,爲解釋here

只需添加依賴於客戶的項目:

<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" 

,並添加客戶的風格。

如果您需要使用父項目的類,您可以在maven-war-plugin配置中將attachClasses屬性設置爲true,並且還可以使用maven-source-plugin附加源(如果需要它們進行調試):

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

是的,這正是我所做的。 –

0

我想我已經找到了一種方法 - 不知道這是因爲它複製主題CSS分成多個作戰項目,而不是創建一個共享實例,但唯一的另一種方式是做一些聰明的服務器配置共享的最佳方式跨項目的網址或其他內容。

http://www.ensor.cc/2011/06/mavens-war-overlay-what-are-war.html

相關問題