Model Objek Penerangan Projek

Salah satu perkara yang diseragamkan oleh Maven pada mulanya ialah penerangan projek. Sebelum Maven, setiap IDE mempunyai fail projek sendiri, yang menyimpan maklumat tentang projek dan pemasangannya (dan selalunya dalam bentuk binari).

Maven telah menghasilkan piawaian terbuka berasaskan XML, universal dan terbuka yang menerangkan maksud projek, cara ia harus dibina dan kebergantungan yang dimilikinya menggunakan pelbagai teg. Penerangan projek terkandung dalam satu fail, biasanya dinamakan pom.xml .

Contoh fail pom.xml :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <version>2.6</version>
        </dependency>
   </dependencies>


</project>

Contoh ini mempunyai tiga perkara yang ditulis:

  • Maklumat tentang versi standard projek maven berwarna biru.
  • Maklumat mengenai projek itu sendiri adalah berwarna merah.
  • Maklumat tentang perpustakaan terpakai adalah hijau.

Mari kita lihat lebih dekat pada peranti fail pom.

Struktur projek Maven

Dan segera persoalannya ialah: adakah anda memberi perhatian kepada keanehan dalam contoh terakhir? Ia tidak mengandungi maklumat tentang kod projek itu sendiri! Tidak ada maklumat di mana fail java, sumber, fail sifat, html, skrip bina dan seumpamanya disimpan.

Dan jawapannya mudah - Maven menyeragamkan reka bentuk projek. Terdapat beberapa pilihan untuk mengatur kod dalam projek, dan yang paling biasa ialah:

Strukturnya agak luar biasa selepas projek IDEA standard, tetapi untuk itu ia adalah universal. 90% daripada projek yang anda akan hadapi dalam hidup anda akan mempunyai struktur folder ini .

Jika anda mencipta projek Maven (menggunakan IDEA atau menggunakan konsol), maka ia akan mengambil bentuk yang ditentukan. Mari lihat bagaimana semuanya berfungsi di sini.

Folder src , anda meneka, mengandungi kod sumber untuk projek itu. Ia mempunyai dua subfolder: utama dan ujian .

Folder /src/main/java ialah akar untuk semua kelas Java dalam projek. Jika anda mempunyai kelas com.codegym.Cat, maka ia akan berada dalam folder /src/main/java /com/codegym /Cat.java . Jika terdapat teks atau sumber binari, ia harus disimpan dalam folder /src/main/resources .

Struktur folder /src/test adalah serupa dengan struktur /src/main folder , tetapi ia mengandungi ujian dan sumbernya. Maven sendiri tahu cara menjalankan ujian yang diperlukan semasa membina projek, tetapi kita akan membincangkan perkara ini dalam kuliah yang berasingan.

Terdapat juga folder /target dalam projek , di mana Maven akan menyimpan projek selepas ia dibina. Memandangkan projek besar selalunya mempunyai skrip binaan bukan remeh, tiada apa yang disimpan dalam folder ini.

Tujuan kedua folder /target adalah untuk cache hasil binaan perantaraan. Apabila membina projek besar, Maven hanya boleh membina semula bahagian itu yang telah berubah, sekali gus mempercepatkan masa binaan beberapa kali.

Nah, sebagai ceri pada kek - pada akar projek adalah fail pom.xml. Ia mengandungi semua maklumat yang diperlukan tentang projek itu, yang akan kami bincangkan di bawah.

Peranti pom.xml

Sebagai permulaan, fail pom ialah xml, jadi ia mengandungi pengepala standard dan maklumat ruang nama. Ini semua tentang standard XML semata-mata, jadi kami tidak akan membincangkannya secara terperinci. Maksudnya begini:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        …

</projek>

Juga, biasanya baris pertama di dalam teg <project> ialah perihalan versi standard pom-file. Hampir selalu ia adalah 4.0. Ini juga tidak menarik minat kami.

Baris pertama yang kami minati kelihatan seperti ini:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

Untuk tidak memahami sekali lagi apa yang kami huraikan (program, projek, modul, perpustakaan, dll.) dalam standard Maven, ini semua dipanggil artifak perkataan . Perkara yang anda tidak boleh menolak pencipta Maven ialah kecintaan terhadap penyeragaman.

Tiga teg yang anda lihat bermaksud:

  • groupId - pakej yang dimiliki oleh aplikasi, dengan penambahan nama domain;
  • artifactId – kunci rentetan unik (id projek);
  • versi - versi projek.

Tiga parameter ini cukup untuk menerangkan dengan jelas sebarang artifak .

Selanjutnya, selepas penerangan projek, biasanya terdapat senarai artifak (perpustakaan) yang digunakan oleh projek. Ia kelihatan seperti ini:

   <dependencies>

       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>

   </dependencies>

Dalam contoh ini, kami menambah perpustakaan commons-io daripada pakej commons-io, versi 2.6, kepada projek kami.

Pada masa pembinaan, Maven akan menemui perpustakaan sedemikian dalam repositori globalnya dan menambahkannya pada projek anda. Dan dengan cara ini, bukan sahaja Maven boleh melakukan ini.

Cara IDEA berfungsi dengan Maven

Intellij IDEA hebat dalam bekerja dengan Maven. Dia tahu cara membuka projek sedemikian, menciptanya sendiri, menjalankan pelbagai skrip binaan dan memahami perpustakaan yang disertakan dengan sempurna.

Ia juga mempunyai Maven terbina dalam sendiri untuk beberapa lama, tetapi anda masih perlu dapat memasang dan mengkonfigurasinya sendiri, jadi ciri IDEA ini tidak disebut sebelum ini. Secara teorinya, IDEA boleh mempunyai konflik antara dua Maven, jadi adalah baik untuk anda mengetahui bahawa terdapat dua.

Cara membuat projek Maven baharu dalam IDEA:

Klik menu Fail > Projek Baharu. Pilih item menu Projek Baharu di sebelah kiri .

projek maven

Mari kita jelaskan beberapa perkara:

  1. Nama Projek;
  2. Folder untuk projek;
  3. Bahasa projek ialah Java;
  4. Jenis projek ialah Maven.

Dalam bahagian Tetapan Lanjutan di bahagian bawah, IDEA akan menggesa anda untuk menentukan goupID, artifactID dan versi projek baharu kami. Data ini sentiasa boleh ditukar dengan mudah kemudian. Pilih daripada yang dicadangkan atau masukkan anda sendiri:

Projek Maven 2

Seterusnya, buat projek secara standard di lokasi yang diperlukan. Akibatnya, kita melihat struktur:

Projek Maven 3

Kelas dan pakej mesti dibuat dalam folder java, kami telah membincangkan perkara ini. Dan saya fikir anda boleh mengendalikannya dengan mudah. Kami sudah bersedia untuk meneruskan, tetapi mari kita kembali sedikit, kepada satu isu penting yang kami "langkau" sedikit.