2012-02-15 19 views
9

Wiem, że to prawdopodobnie głupie pytanie, ale nie mogę tego rozgryźć za moje życie. Zasadniczo używam maven, aby ustawić moją nazwę użytkownika, hasło i nazwę klasy sterownika. Kiedy patrzę w skutecznym pom.xml to wszystko wydaje się w porządku, jak następujePrzekazywanie właściwości maven na wiosnę

<dataSource.driverClassName>oracle.jdbc.driver.OracleDriver</dataSource.driverClassName> 
<dataSource.username>someUsername</dataSource.username> 
<dataSource.password>somePassword</dataSource.password> 

Staram się wykorzystać te informacje podczas deklarowania źródła danych sprężyny. Kod pojawia się w następujący sposób.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${dataSource.driverClassName}"/> 
    <property name="url" value="${dataSource.url}"/> 
    <property name="username" value="${dataSource.username}"/> 
    <property name="password" value="${dataSource.password}"/> 
</bean> 

I następnie przekazać źródło danych do jdbcTemplate ale kiedy korzystać z szablonu, aby uruchomić SQL w moim kod pojawia się błąd mówiąc, że żaden kierowca o nazwie $ {dataSource.driverClassName} można znaleźć. Jest tak oczywiście dlatego, że stała łańcuchowa jest przekazywana, a nie zmienna. czego mi brakuje?

Dzięki

+0

Dzięki za wszelką pomoc. Wygląda na to, że PropertyConfigurationPlaceholder było tym, czego szukałem. –

Odpowiedz

2

Maven nie może przesyłać żadnych danych do aplikacji, ponieważ Maven działa w czasie kompilacji i parametr a oceniana przy starcie.

Ale możesz użyć filtrów maven. Aby zastąpić niektóre znaczniki wartościami, podczas gdy maven przetwarza zasoby.

+0

Zgadzam się z tą odpowiedzią. Korzystanie z filtrowania maven powoduje aktualizację wartości w plikach konfiguracji wiosennej w czasie kompilacji, a zatem posiada prawidłowe wartości w czasie wykonywania. Zobacz http://stackoverflow.com/questions/3886753/access-maven-project-version-in-spring-config-files – Noremac

3

Myślę, że nie można tego zrobić w ten sposób, tj. Od pom.xml do kontekstu kontekstowego aplikacji Spring.

Umieść swoje właściwości w pliku właściwości, coś takiego:

dataSource.username=${dataSource.username} 
dataSource.driverClassName=${dataSource.driverClassName} 
dataSource.username=${dataSource.username} 
dataSource.password=${dataSource.password} 

Następnie użyj PropertyConfigurationPlaceholder do załadowania pliku własności i właściwości sprawiają dostepne na wiosnę pliku kontekstowego applicationt.

6

Najlepszym sposobem jest skonfigurować wtyczkę Maven zasoby:

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

Na przykład, należy określić w Twojej pom.xml (wewnątrz znacznika Build):

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>**/*file_with_properties.xml</include> 
     </includes> 
    </resource> 
</resources> 

Gdzie "**/* file_with_properties.xml" to twoje pliki, w których używasz swoich właściwości (np. $ {dataSource.username}).

Poza tym, można definiować wyjątki: <excludes>**/*other_files.xml</excludes>

Powiązane problemy