En iyi yaklaşım, veritabanı bağlantı özelliklerinizi (kullanıcı adı/parola, url, vb. Gibi) harici yapar. Bir profil içinde, kullanıcı başına özellikleri için değerleri tanımlayabilir ve bunları ayarlamak için maven kaynak filtresini kullanabilirsiniz. Eğer
<project ...>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>filter-db-settings</id>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/config</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/config</directory>
</resource>
<filtering>true</filtering>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugins>
</build>
<profiles>
<profile>
<id>user-A</id>
<properties>
<userName>userA</userName>
<password>secret</password>
<dbDriver>com.driver.db</dbDriver>
<dbUrl>jdbc://db-url</dbUrl>
</properties>
</profile>
<profiles>
</project>
eklentisi olurdu pom içinde
userName = ${userName}
password = ${password}
db-driver = ${dbDriver}
db-url = ${dbUrl}
: En maven proje kapsamında
örneğin örneğin aşağıdaki girdileri içeren (src/config/settings.prp
cinsinden) bir yapılandırma dizini olurdu dosyaları src/config
'da filtreleyecek ve maven yer tutucularını profilinizde belirtilen değerlere göre değiştirecektir. Profil bir şifre içerdiğinden, settings.xml
numaranıza taşıyabilirsiniz, bu sayede projenin kendisi ile birlikte kontrol edilemez, bu da şifreyi istenmeyen taraflara gösterebilir.
UYARı: Yukarıdaki eklenti doğrulanmadı, bu nedenle küçük hatalar içerebilir. Oluşturulma işleminin içinde NOT ürününü yerleştirmek için en iyi yöntem.
Bunu yaparak aynı artefiği farklı kullanıcılardan kullanma özgürlüğünü elde edersiniz ve değiştirmeniz gereken tek şey, dış özellik dosyasındaki (artefaktın yanında kullanıcıya verilecek olan) özelliklerdir.
Aşağıdaki makale, yayı Externalized Configuration ile nasıl dışa aktarabileceğinizi açıklar.
Tam olarak "veritabanı bağlantısı gerçekleştir" ile ne demek istiyorsunuz? Maven bir inşa aracı, bir maven inşa sırasında veritabanından veri ile ne olması gerekiyor? – f1sh
Veritabanı bağlantısı yapmak için hangi sebepten kaynaklanıyorsunuz? Testleriniz için? –
@Nicolas evet Sadece kullanıcı adı ve şifre sağlama gibi testler yapmak istiyorum. bu yüzden nerede yapmalıyım anlamıyorum. lütfen bunun için bana yardım edin. – ketan