2013-12-10 63 views
6

幫助,我想將我的持久性xml屬性值引用到我的db.properties文件中。屬性文件中的Persistence.xml字段值

這裏是我的db.properties文件

jdbc.driver=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/apsas 
jdbc.username=root 
jdbc.password=password 

,這裏是我當前的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="apsaspu" transaction-type="RESOURCE_LOCAL"> 
     <provider> 
      org.hibernate.ejb.HibernatePersistence 
     </provider> 
     <properties> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/apsas" /> 
      <property name="hibernate.connection.username" value="root" /> 
      <property name="hibernate.connection.password" value="password" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

我想要做的是它的屬性設置成這樣

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="apsaspu" transaction-type="RESOURCE_LOCAL"> 
     <provider> 
      org.hibernate.ejb.HibernatePersistence 
     </provider> 
     <properties> 
      <property name="hibernate.connection.driver_class" value="${jdbc.driver}" /> 
      <property name="hibernate.connection.url" value="${jdbc.url}" /> 
      <property name="hibernate.connection.username" value="${jdbc.username}" /> 
      <property name="hibernate.connection.password" value="${jdbc.password}" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

問題是我如何導入屬性文件到我的持久性xml 預先感謝那些會幫助我的人...

+0

你在使用maven嗎? – kostja

+0

是的先生........ –

回答

3

如果您使用的是maven,您可以使用源過濾。使用this docs作爲參考。我將概述一下這個過程。

您需要指定過濾路徑。我不確定是否必須明確定義包含的文件。

<build> 
    ... 
    <resources> 
    <resource> 
     <directory>src/main/resources/META-INF</directory> 
     <filtering>true</filtering> 
     <includes> 
     <include>**/*.xml</include> 
     </includes> 
    </resource> 
    ... 
    </resources> 
    ... 
</build> 

您定義的目錄是相對於pom.xml

現在,您可以定義規則的行家屬性來替換佔位符在persistence.xml

如果你想在一個單獨的屬性文件的屬性,你需要告訴行家,在哪裏可以找到該文件:

<filters> 
    <filter>db.properties</filter> 
</filters> 

過濾發生在mvn resources:resources。此步驟針對您將在部署中執行的所有打包目標進行定義。

您可以使用maven配置文件在屬性集或.properties文件集之間切換。

+0

我嘗試從資源過濾轉移到系統變量和屬性文件。 [這傢伙解釋爲什麼](http://stackoverflow.com/a/1634545/660408) – gkiko