Kata pengantar
Poin nyeri:
Dalam proses pengembangan Java, kita sering harus menghadapi berbagai lingkungan, seperti lingkungan pengembangan, lingkungan pengujian, dan lingkungan formal, dan lingkungan ini memiliki persyaratan yang berbeda untuk proyek.
Sebelum ini, kita sering perlu memodifikasi file konfigurasi yang sesuai secara manual dan kemudian mengetiknya ke dalam perang sebelum kita dapat menggunakannya ke lingkungan yang sesuai.
Namun, ini dapat dengan mudah menyebabkan masalah, karena mudah menyebabkan lebih sedikit atau kehilangan perubahan, menyebabkan masalah yang tidak perlu
fantasi:
Betapa bahasanya jika ada sesuatu yang memungkinkan kami untuk menentukan parameter ketika kami mengetik perang dan secara otomatis menyusun proyek ke dalam perang di lingkungan yang sesuai! Lai Lai
Hasilnya: benar-benar ada hal seperti itu, yaitu Profil Maven
Selama proses pengembangan, kami sering mengkonfigurasi parameter yang berbeda sesuai dengan lingkungan yang berbeda, seperti IP, nama pengguna, kata sandi, URL, kunci rahasia, dll. Dari sumber data akan berbeda. Metode tradisional adalah memodifikasi nilai parameter dalam file properti atau komentar dan komentar dalam file konfigurasi. Ini tidak hanya rentan terhadap kesalahan, tetapi juga membuang waktu yang tidak perlu. Lebih penting lagi, menerbitkan kode ke lingkungan pengujian atau lingkungan produksi mudah dilupakan untuk dimodifikasi. Untuk mengatasi masalah ini, Maven memberikan solusi, yang merupakan profil.
Gambar berikut adalah cara tradisional, dan membutuhkan komentar dan penjelasan pulang-pergi
Lokasi ditentukan oleh profil
Implementasi metode filter
Langkah 1: Tentukan tiga file Application-Dev.Properties, Application-test.Properties, dan Application-Pro.properties masing-masing.
Application-dev.properties
env.jdbc.username = devenv.jdbc.password = 123456
application-test.properties
env.jdbc.username = testenv.jdbc.password = 888888
Application-Pro.Properties
env.jdbc.username = rootenv.jdbc.password = 666666
Langkah 2: Tentukan total file properti application.properties, dan nilai dalam file ini mengacu pada kunci dalam aplikasi- <vidt> .properties.
application.properties
// Referensi keyjdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}# konfigurasi publik garam = 123456789 Langkah 3: Konfigurasikan Profil
<profiles> <profile> <!-- Development environment --> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <!-- Set default activation of this configuration --> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- Test environment --> <id>test</id> <properties> <env>test</env> </properties> </properties> </profile> <profile> <!-- Release environment --> <id>pro</id> <properties> <env>pro</env> </properties> </profile> </profile> </profile> </profile> <profile> <!-- Release environment --> <id>pro</id> <properties> <env>pro</env> </properties> </profile> </profile> </profiles>
Langkah 4: Mengkonfigurasi filter dan sumber daya
$ {env} adalah nama mvn package -P <env> , yang memberi tahu kunci yang diterapkan di application.properties adalah kunci file properti.
<build> <finalName>profile-app</finalName> <!-- Define the address of the variable configuration file --> <filters> <filter>src/main/resources/config/application/application-${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resources> </resources> <Plugins> <GroupId> org.apache.maven.plugins </groupid> <ArTifactId> Maven-war-plugin </artifactid> </lugin> </lugin> </bangun> Paket dan jalankan
// Jika lingkungan tidak ditentukan, standarnya adalah lingkungan dengan ActiveByDefault = true. Saat ini, ini mengacu pada Paket MVN Lingkungan Pengembangan // Lingkungan yang ditentukan dalam paket melewati parameter -p, perhatikan bahwa P dikapitalisasi paket MVN -p <vidt>
Dari hasil menjalankan uji mvn packege -p, Anda dapat melihat bahwa jdbc.username dan jdbc.password di kelas/application.perperties di direktori target yang dihasilkan adalah nilai -nilai dari env.jdbc.username dan env.jdbc.password yang dikonfigurasi dalam aplikasi -test.properies.
Jika Anda ingin menggunakan file konfigurasi atribut di musim semi, cukup perkenalkan file konfigurasi total ini secara langsung, dan misi file konfigurasi lingkungan lainnya telah berakhir.
<context:property-placeholder location="classpath:application.properties"/>
Prinsip Implementasi:
Tentukan profil yang berbeda untuk setiap lingkungan yang berbeda di pom.xml. Setiap profil memiliki nama lingkungan. Kemudian tentukan file konfigurasi yang berbeda untuk lingkungan yang berbeda (seperti application-<env>.properties . Kemudian biarkan nilai application.properties merujuk kunci yang sesuai dalam application-<env>.properties , dan tentukan nama lingkungan yang akan dikemas saat pengemasan. Dengan cara ini, nilai kunci dalam aplikasi.
Metode implementasi multi-sumber daya
melangkah
Langkah 1: Buat direktori Env di SRC/Main/Resource, kemudian buat subdirektori dari setiap lingkungan, dan kemudian buat file bernama config.properties di bawah setiap subdirektori lingkungan. Setiap kunci sama dan nilainya berbeda.
Env/dev/config.properties
jdbc.username = devjdbc.password = 123456
Env/test/config.properties
jdbc.username = testjdbc.password = 888888
Env/Pro/config.properties
jdbc.username = rootjdbc.password = 666666
Langkah 2: Buat aplikasi yang tidak tergantung lingkungan
application.properties
# Konfigurasi publik garam = 123456789
Langkah 3: Mengkonfigurasi Profil
<profiles> <profile> <!-- Development environment --> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <!-- Set default activation of this configuration --> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- Test environment --> <id>test</id> <properties> <env>test</env> </properties> </ Properties> </profile> <profile> <!-Release Environment-> <dent> Pro </dent> <Properties> <vidt> Pro </Iv> </ Properties> </Properties> </profile> <prile> <!-Release Environment-> <dent> Pro </id Properties> <v> Pro </Env> </Properties> <droft> </id Properties>
Langkah 4: Mengkonfigurasi Sumber Daya
<Build> <finalname> Profil-App </finalName> <!-Tentukan alamat file konfigurasi variabel-> <serformage> <seragaraan> <recrectory> SRC/Main/Resources </Directory> <celupludes> <clext> quid/dev/*</cellude> <cludude> test/test/test/*<c nexc Exclude> quid/*</neckLude> <cludude> uji/test/*</tidak dikecualikan> <Exclude> </dev/*</clude> <cludude> <cuxt> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources/env/${env}</directory> <includes> <include>*.*</include> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <groupId> org.apache.maven.plugins </groupid> <ArTifactId> maven-war-plugin </stifactid> </lugin> </lugin> </plugin> </dujen> Langkah 5: Jalankan mvn package -P test
Jika Anda sering menggunakan mvn package -P <env> Anda dapat mengonfigurasi beberapa Maven di Ide. Langkah-langkahnya adalah: Edit konfigurasi ...- + ―- Maven ―- Tambahkan perintah Maven untuk setiap lingkungan. Di masa mendatang, klik dua kali konfigurasi Run, yang setara dengan menjalankan perintah mvn package -P <env> .
Perbandingan dari dua cara
Metode filter akan mengemas semua aplikasi-dev.properties, application-test.properties, dan file application-pro.properties, dan metode ini hanya dapat digunakan untuk file properti. Jika ada file lain (seperti .xml) dan memiliki konfigurasi yang berbeda sesuai dengan lingkungan yang berbeda, metode ini sulit ditangani.
Saat pengemasan, metode multi-sumber daya hanya mengemas file konfigurasi dari lingkungan yang ditentukan. Anda dapat menempatkan berbagai file ke dalam folder lingkungan masing -masing, dan seluruh folder akan dikemas saat pengemasan. Rekomendasikan metode ini
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.