天天看點

maven最齊全配置pom.xml

0001

<project xmlns="http://maven.apache.org/POM/4.0.0"

0002

0003

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

0004

0005

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">

0006

0007

<!-- 父項目的坐标。如果項目中沒有規定某個元素的值,那麼父項目中的對應值即為項目的預設值。 坐标包括group ID,artifact ID和 version。 -->

0008

0009

<parent>

0010

0011

<!-- 被繼承的父項目的構件辨別符 -->

0012

0013

<artifactId />

0014

0015

<!-- 被繼承的父項目的全球唯一辨別符 -->

0016

0017

<groupId />

0018

0019

<!-- 被繼承的父項目的版本 -->

0020

0021

<version />

0022

0023

<!-- 父項目的pom.xml檔案的相對路徑。相對路徑允許你選擇一個不同的路徑。預設值是../pom.xml。Maven首先在建構目前項目的地方尋找父項目的pom,其次在檔案系統的這個位置(relativePath位置),然後在本地倉庫,最後在遠端倉庫尋找父項目的pom。 -->

0024

0025

<relativePath />

0026

0027

</parent>

0028

0029

<!-- 聲明項目描述符遵循哪一個POM模型版本。模型本身的版本很少改變,雖然如此,但它仍然是必不可少的,這是為了當Maven引入了新的特性或者其他模型變更的時候,確定穩定性。 -->

0030

0031

<modelVersion> 4.0.0 </modelVersion>

0032

0033

<!-- 項目的全球唯一辨別符,通常使用全限定的包名區分該項目和其他項目。并且建構時生成的路徑也是由此生成, 如com.mycompany.app生成的相對路徑為:/com/mycompany/app -->

0034

0035

<groupId> asia.banseon </groupId>

0036

0037

<!-- 構件的辨別符,它和group ID一起唯一辨別一個構件。換句話說,你不能有兩個不同的項目擁有同樣的artifact ID和groupID;在某個特定的group ID下,artifact ID也必須是唯一的。構件是項目産生的或使用的一個東西,Maven為項目産生的構件包括:JARs,源碼,二進制釋出和WARs等。 -->

0038

0039

<artifactId> banseon-maven2 </artifactId>

0040

0041

<!-- 項目産生的構件類型,例如jar、war、ear、pom。插件可以建立他們自己的構件類型,是以前面列的不是全部構件類型 -->

0042

0043

<packaging> jar </packaging>

0044

0045

<!-- 項目目前版本,格式為:主版本.次版本.增量版本-限定版本号 -->

0046

0047

<version> 1.0-SNAPSHOT </version>

0048

0049

<!-- 項目的名稱, Maven産生的文檔用 -->

0050

0051

<name> banseon-maven </name>

0052

0053

<!-- 項目首頁的URL, Maven産生的文檔用 -->

0054

0055

<url> http://www.baidu.com/banseon </url>

0056

0057

<!-- 項目的較長的描述, Maven 産生的文檔用。 當這個元素能夠用HTML格式描述時(例如,CDATA中的文本會被解析器忽略,就可以包含HTML标簽), 不鼓勵使用純文字描述。如果你需要修改産生的web站點的索引頁面,你應該修改你自己的索引頁檔案,而不是調整這裡的文檔。 -->

0058

0059

<description> A maven project to study maven. </description>

0060

0061

<!-- 描述了這個項目建構環境中的前提條件。 -->

0062

0063

<prerequisites>

0064

0065

<!-- 建構該項目或使用該插件所需要的Maven的最低版本 -->

0066

0067

<maven />

0068

0069

</prerequisites>

0070

0071

<!-- 項目的問題管理系統(Bugzilla, Jira, Scarab,或任何你喜歡的問題管理系統)的名稱和URL,本例為 jira -->

0072

0073

<issueManagement>

0074

0075

<!-- 問題管理系統(例如jira)的名字, -->

0076

0077

<system> jira </system>

0078

0079

<!-- 該項目使用的問題管理系統的URL -->

0080

0081

<url> http://jira.baidu.com/banseon </url>

0082

0083

</issueManagement>

0084

0085

<!-- 項目持續內建資訊 -->

0086

0087

<ciManagement>

0088

0089

<!-- 持續內建系統的名字,例如continuum -->

0090

0091

<system />

0092

0093

<!-- 該項目使用的持續內建系統的URL(如果持續內建系統有web接口的話)。 -->

0094

0095

<url />

0096

0097

<!-- 建構完成時,需要通知的開發者/使用者的配置項。包括被通知者資訊和通知條件(錯誤,失敗,成功,警告) -->

0098

0099

<notifiers>

0100

0101

<!-- 配置一種方式,當建構中斷時,以該方式通知使用者/開發者 -->

0102

0103

<notifier>

0104

0105

<!-- 傳送通知的途徑 -->

0106

0107

<type />

0108

0109

<!-- 發生錯誤時是否通知 -->

0110

0111

<sendOnError />

0112

0113

<!-- 建構失敗時是否通知 -->

0114

0115

<sendOnFailure />

0116

0117

<!-- 建構成功時是否通知 -->

0118

0119

<sendOnSuccess />

0120

0121

<!-- 發生警告時是否通知 -->

0122

0123

<sendOnWarning />

0124

0125

<!-- 不贊成使用。通知發送到哪裡 -->

0126

0127

<address />

0128

0129

<!-- 擴充配置項 -->

0130

0131

<configuration />

0132

0133

</notifier>

0134

0135

</notifiers>

0136

0137

</ciManagement>

0138

0139

<!-- 項目建立年份,4位數字。當産生版權資訊時需要使用這個值。 -->

0140

0141

<inceptionYear />

0142

0143

<!-- 項目相關郵件清單資訊 -->

0144

0145

<mailingLists>

0146

0147

<!-- 該元素描述了項目相關的所有郵件清單。自動産生的網站引用這些資訊。 -->

0148

0149

<mailingList>

0150

0151

<!-- 郵件的名稱 -->

0152

0153

<name> Demo </name>

0154

0155

<!-- 發送郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->

0156

0157

<post> [email protected] </post>

0158

0159

<!-- 訂閱郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->

0160

0161

<subscribe> [email protected] </subscribe>

0162

0163

<!-- 取消訂閱郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->

0164

0165

<unsubscribe> [email protected] </unsubscribe>

0166

0167

<!-- 你可以浏覽郵件資訊的URL -->

0168

0169

<archive> http:/hi.baidu.com/banseon/demo/dev/ </archive>

0170

0171

</mailingList>

0172

0173

</mailingLists>

0174

0175

<!-- 項目開發者清單 -->

0176

0177

<developers>

0178

0179

<!-- 某個項目開發者的資訊 -->

0180

0181

<developer>

0182

0183

<!-- SCM裡項目開發者的唯一辨別符 -->

0184

0185

<id> HELLO WORLD </id>

0186

0187

<!-- 項目開發者的全名 -->

0188

0189

<name> banseon </name>

0190

0191

<!-- 項目開發者的email -->

0192

0193

<email> [email protected] </email>

0194

0195

<!-- 項目開發者的首頁的URL -->

0196

0197

0198

0199

<!-- 項目開發者在項目中扮演的角色,角色元素描述了各種角色 -->

0200

0201

<roles>

0202

0203

<role> Project Manager </role>

0204

0205

<role> Architect </role>

0206

0207

</roles>

0208

0209

<!-- 項目開發者所屬組織 -->

0210

0211

<organization> demo </organization>

0212

0213

<!-- 項目開發者所屬組織的URL -->

0214

0215

<organizationUrl> http://hi.baidu.com/banseon </organizationUrl>

0216

0217

<!-- 項目開發者屬性,如即時消息如何處理等 -->

0218

0219

<properties>

0220

0221

<dept> No </dept>

0222

0223

</properties>

0224

0225

<!-- 項目開發者所在時區, -11到12範圍内的整數。 -->

0226

0227

<timezone> -5 </timezone>

0228

0229

</developer>

0230

0231

</developers>

0232

0233

<!-- 項目的其他貢獻者清單 -->

0234

0235

<contributors>

0236

0237

<!-- 項目的其他貢獻者。參見developers/developer元素 -->

0238

0239

<contributor>

0240

0241

<name /><email /><url /><organization /><organizationUrl /><roles /><timezone /><properties />

0242

0243

</contributor>

0244

0245

</contributors>

0246

0247

<!-- 該元素描述了項目所有License清單。 應該隻列出該項目的license清單,不要列出依賴項目的 license清單。如果列出多個license,使用者可以選擇它們中的一個而不是接受所有license。 -->

0248

0249

<licenses>

0250

0251

<!-- 描述了項目的license,用于生成項目的web站點的license頁面,其他一些報表和validation也會用到該元素。 -->

0252

0253

<license>

0254

0255

<!-- license用于法律上的名稱 -->

0256

0257

<name> Apache 2 </name>

0258

0259

<!-- 官方的license正文頁面的URL -->

0260

0261

<url> http://www.baidu.com/banseon/LICENSE-2.0.txt </url>

0262

0263

<!-- 項目分發的主要方式:

0264

0265

repo,可以從Maven庫下載下傳

0266

0267

manual, 使用者必須手動下載下傳和安裝依賴 -->

0268

0269

<distribution> repo </distribution>

0270

0271

<!-- 關于license的補充資訊 -->

0272

0273

<comments> A business-friendly OSS license </comments>

0274

0275

</license>

0276

0277

</licenses>

0278

0279

<!-- SCM(Source Control Management)标簽允許你配置你的代碼庫,供Maven web站點和其它插件使用。 -->

0280

0281

<scm>

0282

0283

<!-- SCM的URL,該URL描述了版本庫和如何連接配接到版本庫。欲知詳情,請看SCMs提供的URL格式和清單。該連接配接隻讀。 -->

0284

0285

<connection>

0286

0287

scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)

0288

0289

</connection>

0290

0291

<!-- 給開發者使用的,類似connection元素。即該連接配接不僅僅隻讀 -->

0292

0293

<developerConnection>

0294

0295

scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk

0296

0297

</developerConnection>

0298

0299

<!-- 目前代碼的标簽,在開發階段預設為HEAD -->

0300

0301

<tag />

0302

0303

<!-- 指向項目的可浏覽SCM庫(例如ViewVC或者Fisheye)的URL。 -->

0304

0305

<url> http://svn.baidu.com/banseon </url>

0306

0307

</scm>

0308

0309

<!-- 描述項目所屬組織的各種屬性。Maven産生的文檔用 -->

0310

0311

<organization>

0312

0313

<!-- 組織的全名 -->

0314

0315

<name> demo </name>

0316

0317

<!-- 組織首頁的URL -->

0318

0319

0320

0321

</organization>

0322

0323

<!-- 建構項目需要的資訊 -->

0324

0325

<build>

0326

0327

<!-- 該元素設定了項目源碼目錄,當建構項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->

0328

0329

<sourceDirectory />

0330

0331

<!-- 該元素設定了項目腳本源碼目錄,該目錄和源碼目錄不同:絕大多數情況下,該目錄下的内容 會被拷貝到輸出目錄(因為腳本是被解釋的,而不是被編譯的)。 -->

0332

0333

<scriptSourceDirectory />

0334

0335

<!-- 該元素設定了項目單元測試使用的源碼目錄,當測試項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->

0336

0337

<testSourceDirectory />

0338

0339

<!-- 被編譯過的應用程式class檔案存放的目錄。 -->

0340

0341

<outputDirectory />

0342

0343

<!-- 被編譯過的測試class檔案存放的目錄。 -->

0344

0345

<testOutputDirectory />

0346

0347

<!-- 使用來自該項目的一系列建構擴充 -->

0348

0349

<extensions>

0350

0351

<!-- 描述使用到的建構擴充。 -->

0352

0353

<extension>

0354

0355

<!-- 建構擴充的groupId -->

0356

0357

0358

0359

<!-- 建構擴充的artifactId -->

0360

0361

0362

0363

<!-- 建構擴充的版本 -->

0364

0365

0366

0367

</extension>

0368

0369

</extensions>

0370

0371

<!-- 當項目沒有規定目标(Maven2 叫做階段)時的預設值 -->

0372

0373

<defaultGoal />

0374

0375

<!-- 這個元素描述了項目相關的所有資源路徑清單,例如和項目相關的屬性檔案,這些資源被包含在最終的打封包件裡。 -->

0376

0377

<resources>

0378

0379

<!-- 這個元素描述了項目相關或測試相關的所有資源路徑 -->

0380

0381

<resource>

0382

0383

<!-- 描述了資源的目标路徑。該路徑相對target/classes目錄(例如${project.build.outputDirectory})。舉個例子,如果你想資源在特定的包裡(org.apache.maven.messages),你就必須該元素設定為org/apache/maven/messages。然而,如果你隻是想把資源放到源碼目錄結構裡,就不需要該配置。 -->

0384

0385

<targetPath />

0386

0387

<!-- 是否使用參數值代替參數名。參數值取自properties元素或者檔案裡配置的屬性,檔案在filters元素裡列出。 -->

0388

0389

<filtering />

0390

0391

<!-- 描述存放資源的目錄,該路徑相對POM路徑 -->

0392

0393

<directory />

0394

0395

<!-- 包含的模式清單,例如**/*.xml. -->

0396

0397

<includes />

0398

0399

<!-- 排除的模式清單,例如**/*.xml -->

0400

0401

<excludes />

0402

0403

</resource>

0404

0405

</resources>

0406

0407

<!-- 這個元素描述了單元測試相關的所有資源路徑,例如和單元測試相關的屬性檔案。 -->

0408

0409

<testResources>

0410

0411

<!-- 這個元素描述了測試相關的所有資源路徑,參見build/resources/resource元素的說明 -->

0412

0413

<testResource>

0414

0415

<targetPath /><filtering /><directory /><includes /><excludes />

0416

0417

</testResource>

0418

0419

</testResources>

0420

0421

<!-- 建構産生的所有檔案存放的目錄 -->

0422

0423

0424

0425

<!-- 産生的構件的檔案名,預設值是${artifactId}-${version}。 -->

0426

0427

<finalName />

0428

0429

<!-- 當filtering開關打開時,使用到的過濾器屬性檔案清單 -->

0430

0431

<filters />

0432

0433

<!-- 子項目可以引用的預設插件資訊。該插件配置項直到被引用時才會被解析或綁定到生命周期。給定插件的任何本地配置都會覆寫這裡的配置 -->

0434

0435

<pluginManagement>

0436

0437

<!-- 使用的插件清單 。 -->

0438

0439

<plugins>

0440

0441

<!-- plugin元素包含描述插件所需要的資訊。 -->

0442

0443

<plugin>

0444

0445

<!-- 插件在倉庫裡的group ID -->

0446

0447

0448

0449

<!-- 插件在倉庫裡的artifact ID -->

0450

0451

0452

0453

<!-- 被使用的插件的版本(或版本範圍) -->

0454

0455

0456

0457

<!-- 是否從該插件下載下傳Maven擴充(例如打包和類型處理器),由于性能原因,隻有在真需要下載下傳時,該元素才被設定成enabled。 -->

0458

0459

<extensions />

0460

0461

<!-- 在建構生命周期中執行一組目标的配置。每個目标可能有不同的配置。 -->

0462

0463

<executions>

0464

0465

<!-- execution元素包含了插件執行需要的資訊 -->

0466

0467

<execution>

0468

0469

<!-- 執行目标的辨別符,用于辨別建構過程中的目标,或者比對繼承過程中需要合并的執行目标 -->

0470

0471

<id />

0472

0473

<!-- 綁定了目标的建構生命周期階段,如果省略,目标會被綁定到源資料裡配置的預設階段 -->

0474

0475

<phase />

0476

0477

<!-- 配置的執行目标 -->

0478

0479

<goals />

0480

0481

<!-- 配置是否被傳播到子POM -->

0482

0483

<inherited />

0484

0485

<!-- 作為DOM對象的配置 -->

0486

0487

0488

0489

</execution>

0490

0491

</executions>

0492

0493

<!-- 項目引入插件所需要的額外依賴 -->

0494

0495

<dependencies>

0496

0497

<!-- 參見dependencies/dependency元素 -->

0498

0499

<dependency>

0500

0501

0502

0503

</dependency>

0504

0505

</dependencies>

0506

0507

<!-- 任何配置是否被傳播到子項目 -->

0508

0509

0510

0511

0512

0513

0514

0515

</plugin>

0516

0517

</plugins>

0518

0519

</pluginManagement>

0520

0521

<!-- 使用的插件清單 -->

0522

0523

0524

0525

<!-- 參見build/pluginManagement/plugins/plugin元素 -->

0526

0527

0528

0529

<groupId /><artifactId /><version /><extensions />

0530

0531

0532

0533

0534

0535

<id /><phase /><goals /><inherited /><configuration />

0536

0537

0538

0539

0540

0541

0542

0543

0544

0545

0546

0547

0548

0549

0550

0551

0552

0553

<goals /><inherited /><configuration />

0554

0555

0556

0557

0558

0559

</build>

0560

0561

<!-- 在列的項目建構profile,如果被激活,會修改建構處理 -->

0562

0563

<profiles>

0564

0565

<!-- 根據環境參數或指令行參數激活某個建構處理 -->

0566

0567

<profile>

0568

0569

<!-- 建構配置的唯一辨別符。即用于指令行激活,也用于在繼承時合并具有相同辨別符的profile。 -->

0570

0571

0572

0573

<!-- 自動觸發profile的條件邏輯。Activation是profile的開啟鑰匙。profile的力量來自于它

0574

0575

能夠在某些特定的環境中自動使用某些特定的值;這些環境通過activation元素指定。activation元素并不是激活profile的唯一方式。 -->

0576

0577

<activation>

0578

0579

<!-- profile預設是否激活的标志 -->

0580

0581

<activeByDefault />

0582

0583

<!-- 當比對的jdk被檢測到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4開頭的JDK。 -->

0584

0585

<jdk />

0586

0587

<!-- 當比對的作業系統屬性被檢測到,profile被激活。os元素可以定義一些作業系統相關的屬性。 -->

0588

0589

<os>

0590

0591

<!-- 激活profile的作業系統的名字 -->

0592

0593

<name> Windows XP </name>

0594

0595

<!-- 激活profile的作業系統所屬家族(如 'windows') -->

0596

0597

<family> Windows </family>

0598

0599

<!-- 激活profile的作業系統體系結構 -->

0600

0601

<arch> x86 </arch>

0602

0603

<!-- 激活profile的作業系統版本 -->

0604

0605

<version> 5.1.2600 </version>

0606

0607

</os>

0608

0609

<!-- 如果Maven檢測到某一個屬性(其值可以在POM中通過${名稱}引用),其擁有對應的名稱和值,Profile就會被激活。如果值

0610

0611

字段是空的,那麼存在屬性名稱字段就會激活profile,否則按區分大小寫方式比對屬性值字段 -->

0612

0613

<property>

0614

0615

<!-- 激活profile的屬性的名稱 -->

0616

0617

<name> mavenVersion </name>

0618

0619

<!-- 激活profile的屬性的值 -->

0620

0621

<value> 2.0.3 </value>

0622

0623

</property>

0624

0625

<!-- 提供一個檔案名,通過檢測該檔案的存在或不存在來激活profile。missing檢查檔案是否存在,如果不存在則激活

0626

0627

profile。另一方面,exists則會檢查檔案是否存在,如果存在則激活profile。 -->

0628

0629

<file>

0630

0631

<!-- 如果指定的檔案存在,則激活profile。 -->

0632

0633

<exists> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists>

0634

0635

<!-- 如果指定的檔案不存在,則激活profile。 -->

0636

0637

<missing> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing>

0638

0639

</file>

0640

0641

</activation>

0642

0643

<!-- 建構項目所需要的資訊。參見build元素 -->

0644

0645

0646

0647

0648

0649

0650

0651

0652

0653

0654

0655

0656

0657

0658

0659

0660

0661

0662

0663

0664

0665

0666

0667

0668

0669

<directory /><finalName /><filters />

0670

0671

0672

0673

0674

0675

0676

0677

0678

0679

0680

0681

0682

0683

0684

0685

0686

0687

0688

0689

0690

0691

0692

0693

0694

0695

0696

0697

0698

0699

0700

0701

0702

0703

0704

0705

0706

0707

0708

0709

0710

0711

0712

0713

0714

0715

0716

0717

0718

0719

0720

0721

0722

0723

0724

0725

0726

0727

0728

0729

0730

0731

0732

0733

0734

0735

0736

0737

0738

0739

0740

0741

0742

0743

0744

0745

0746

0747

0748

0749

<!-- 子產品(有時稱作子項目) 被建構成項目的一部分。列出的每個子產品元素是指向該子產品的目錄的相對路徑 -->

0750

0751

<modules />

0752

0753

<!-- 發現依賴和擴充的遠端倉庫清單。 -->

0754

0755

<repositories>

0756

0757

<!-- 參見repositories/repository元素 -->

0758

0759

<repository>

0760

0761

<releases>

0762

0763

<enabled /><updatePolicy /><checksumPolicy />

0764

0765

</releases>

0766

0767

<snapshots>

0768

0769

0770

0771

</snapshots>

0772

0773

<id /><name /><url /><layout />

0774

0775

</repository>

0776

0777

</repositories>

0778

0779

<!-- 發現插件的遠端倉庫清單,這些插件用于建構和報表 -->

0780

0781

<pluginRepositories>

0782

0783

<!-- 包含需要連接配接到遠端插件倉庫的資訊.參見repositories/repository元素 -->

0784

0785

<pluginRepository>

0786

0787

0788

0789

0790

0791

0792

0793

0794

0795

0796

0797

0798

0799

0800

0801

</pluginRepository>

0802

0803

</pluginRepositories>

0804

0805

<!-- 該元素描述了項目相關的所有依賴。 這些依賴組成了項目建構過程中的一個個環節。它們自動從項目定義的倉庫中下載下傳。要擷取更多資訊,請看項目依賴機制。 -->

0806

0807

0808

0809

0810

0811

0812

0813

0814

0815

0816

0817

0818

0819

<!-- 不贊成使用. 現在Maven忽略該元素. -->

0820

0821

<reports />

0822

0823

<!-- 該元素包括使用報表插件産生報表的規範。當使用者執行“mvn site”,這些報表就會運作。 在頁面導航欄能看到所有報表的連結。參見reporting元素 -->

0824

0825

<reporting>

0826

0827

0828

0829

</reporting>

0830

0831

<!-- 參見dependencyManagement元素 -->

0832

0833

<dependencyManagement>

0834

0835

0836

0837

0838

0839

0840

0841

0842

0843

0844

0845

0846

0847

</dependencyManagement>

0848

0849

<!-- 參見distributionManagement元素 -->

0850

0851

<distributionManagement>

0852

0853

0854

0855

</distributionManagement>

0856

0857

<!-- 參見properties元素 -->

0858

0859

<properties />

0860

0861

</profile>

0862

0863

</profiles>

0864

0865

0866

0867

0868

0869

0870

0871

0872

0873

<!-- 包含需要連接配接到遠端倉庫的資訊 -->

0874

0875

0876

0877

<!-- 如何處理遠端倉庫裡釋出版本的下載下傳 -->

0878

0879

0880

0881

<!-- true或者false表示該倉庫是否為下載下傳某種類型構件(釋出版,快照版)開啟。 -->

0882

0883

<enabled />

0884

0885

<!-- 該元素指定更新發生的頻率。Maven會比較本地POM和遠端POM的時間戳。這裡的選項是:always(一直),daily(預設,每日),interval:X(這裡X是以分鐘為機關的時間間隔),或者never(從不)。 -->

0886

0887

<updatePolicy />

0888

0889

<!-- 當Maven驗證構件校驗檔案失敗時該怎麼做:ignore(忽略),fail(失敗),或者warn(警告)。 -->

0890

0891

<checksumPolicy />

0892

0893

0894

0895

<!-- 如何處理遠端倉庫裡快照版本的下載下傳。有了releases和snapshots這兩組配置,POM就可以在每個單獨的倉庫中,為每種類型的構件采取不同的政策。例如,可能有人會決定隻為開發目的開啟對快照版本下載下傳的支援。參見repositories/repository/releases元素 -->

0896

0897

0898

0899

0900

0901

0902

0903

<!-- 遠端倉庫唯一辨別符。可以用來比對在settings.xml檔案裡配置的遠端倉庫 -->

0904

0905

<id> banseon-repository-proxy </id>

0906

0907

<!-- 遠端倉庫名稱 -->

0908

0909

<name> banseon-repository-proxy </name>

0910

0911

<!-- 遠端倉庫URL,按protocol://hostname/path形式 -->

0912

0913

<url> http://192.168.1.169:9999/repository/ </url>

0914

0915

<!-- 用于定位和排序構件的倉庫布局類型-可以是default(預設)或者legacy(遺留)。Maven 2為其倉庫提供了一個預設的布局;然而,Maven 1.x有一種不同的布局。我們可以使用該元素指定布局是default(預設)還是legacy(遺留)。 -->

0916

0917

<layout> default </layout>

0918

0919

0920

0921

0922

0923

0924

0925

0926

0927

0928

0929

0930

0931

0932

0933

0934

0935

0936

0937

0938

0939

0940

0941

0942

0943

0944

0945

<!-- 依賴的group ID -->

0946

0947

<groupId> org.apache.maven </groupId>

0948

0949

<!-- 依賴的artifact ID -->

0950

0951

<artifactId> maven-artifact </artifactId>

0952

0953

<!-- 依賴的版本号。 在Maven 2裡, 也可以配置成版本号的範圍。 -->

0954

0955

<version> 3.8.1 </version>

0956

0957

<!-- 依賴類型,預設類型是jar。它通常表示依賴的檔案的擴充名,但也有例外。一個類型可以被映射成另外一個擴充名或分類器。類型經常和使用的打包方式對應,盡管這也有例外。一些類型的例子:jar,war,ejb-client和test-jar。如果設定extensions為 true,就可以在plugin裡定義新的類型。是以前面的類型的例子不完整。 -->

0958

0959

<type> jar </type>

0960

0961

<!-- 依賴的分類器。分類器可以區分屬于同一個POM,但不同建構方式的構件。分類器名被附加到檔案名的版本号後面。例如,如果你想要建構兩個單獨的構件成JAR,一個使用Java 1.4編譯器,另一個使用Java 6編譯器,你就可以使用分類器來生成兩個單獨的JAR構件。 -->

0962

0963

<classifier></classifier>

0964

0965

<!-- 依賴範圍。在項目釋出過程中,幫助決定哪些構件被包括進來。欲知詳情請參考依賴機制。

0966

0967

- compile :預設範圍,用于編譯

0968

0969

- provided:類似于編譯,但支援你期待jdk或者容器提供,類似于classpath

0970

0971

- runtime: 在執行時需要使用

0972

0973

- test: 用于test任務時使用

0974

0975

- system: 需要外在提供相應的元素。通過systemPath來取得

0976

0977

- systemPath: 僅用于範圍為system。提供相應的路徑

0978

0979

- optional: 當項目自身被依賴時,标注依賴是否傳遞。用于連續依賴時使用 -->

0980

0981

<scope> test </scope>

0982

0983

<!-- 僅供system範圍使用。注意,不鼓勵使用這個元素,并且在新的版本中該元素可能被覆寫掉。該元素為依賴規定了檔案系統上的路徑。需要絕對路徑而不是相對路徑。推薦使用屬性比對絕對路徑,例如${java.home}。 -->

0984

0985

<systemPath></systemPath>

0986

0987

<!-- 當計算傳遞依賴時, 從依賴構件清單裡,列出被排除的依賴構件集。即告訴maven你隻依賴指定的項目,不依賴項目的依賴。此元素主要用于解決版本沖突問題 -->

0988

0989

<exclusions>

0990

0991

<exclusion>

0992

0993

<artifactId> spring-core </artifactId>

0994

0995

<groupId> org.springframework </groupId>

0996

0997

</exclusion>

0998

0999

</exclusions>

1000

1001

<!-- 可選依賴,如果你在項目B中把C依賴聲明為可選,你就需要在依賴于B的項目(例如項目A)中顯式的引用對C的依賴。可選依賴阻斷依賴的傳遞性。 -->

1002

1003

<optional> true </optional>

1004

1005

1006

1007

1008

1009

1010

1011

<reports></reports>

1012

1013

<!-- 該元素描述使用報表插件産生報表的規範。當使用者執行“mvn site”,這些報表就會運作。 在頁面導航欄能看到所有報表的連結。 -->

1014

1015

1016

1017

<!-- true,則,網站不包括預設的報表。這包括“項目資訊”菜單中的報表。 -->

1018

1019

<excludeDefaults />

1020

1021

<!-- 所有産生的報表存放到哪裡。預設值是${project.build.directory}/site。 -->

1022

1023

1024

1025

<!-- 使用的報表插件和他們的配置。 -->

1026

1027

1028

1029

<!-- plugin元素包含描述報表插件需要的資訊 -->

1030

1031

1032

1033

<!-- 報表插件在倉庫裡的group ID -->

1034

1035

1036

1037

<!-- 報表插件在倉庫裡的artifact ID -->

1038

1039

1040

1041

<!-- 被使用的報表插件的版本(或版本範圍) -->

1042

1043

1044

1045

1046

1047

1048

1049

<!-- 報表插件的配置 -->

1050

1051

1052

1053

<!-- 一組報表的多重規範,每個規範可能有不同的配置。一個規範(報表集)對應一個執行目标 。例如,有1,2,3,4,5,6,7,8,9個報表。1,2,5構成A報表集,對應一個執行目标。2,5,8構成B報表集,對應另一個執行目标 -->

1054

1055

<reportSets>

1056

1057

<!-- 表示報表的一個集合,以及産生該集合的配置 -->

1058

1059

<reportSet>

1060

1061

<!-- 報表集合的唯一辨別符,POM繼承時用到 -->

1062

1063

1064

1065

<!-- 産生報表集合時,被使用的報表的配置 -->

1066

1067

1068

1069

<!-- 配置是否被繼承到子POMs -->

1070

1071

1072

1073

<!-- 這個集合裡使用到哪些報表 -->

1074

1075

1076

1077

</reportSet>

1078

1079

</reportSets>

1080

1081

1082

1083

1084

1085

1086

1087

<!-- 繼承自該項目的所有子項目的預設依賴資訊。這部分的依賴資訊不會被立即解析,而是當子項目聲明一個依賴(必須描述group ID和artifact ID資訊),如果group ID和artifact ID以外的一些資訊沒有描述,則通過group ID和artifact ID比對到這裡的依賴,并使用這裡的依賴資訊。 -->

1088

1089

1090

1091

1092

1093

1094

1095

1096

1097

1098

1099

1100

1101

1102

1103

1104

1105

<!-- 項目分發資訊,在執行mvn deploy後表示要釋出的位置。有了這些資訊就可以把網站部署到遠端伺服器或者把構件部署到遠端倉庫。 -->

1106

1107

1108

1109

<!-- 部署項目産生的構件到遠端倉庫需要的資訊 -->

1110

1111

1112

1113

<!-- 是配置設定給快照一個唯一的版本号(由時間戳和建構流水号)?還是每次都使用相同的版本号?參見repositories/repository元素 -->

1114

1115

<uniqueVersion />

1116

1117

<id> banseon-maven2 </id>

1118

1119

<name> banseon maven2 </name>

1120

1121

<url> file://${basedir}/target/deploy </url>

1122

1123

<layout />

1124

1125

1126

1127

<!-- 構件的快照部署到哪裡?如果沒有配置該元素,預設部署到repository元素配置的倉庫,參見distributionManagement/repository元素 -->

1128

1129

<snapshotRepository>

1130

1131

1132

1133

1134

1135

<name> Banseon-maven2 Snapshot Repository </name>

1136

1137

<url> scp://svn.baidu.com/banseon:/usr/local/maven-snapshot </url>

1138

1139

1140

1141

</snapshotRepository>

1142

1143

<!-- 部署項目的網站需要的資訊 -->

1144

1145

<site>

1146

1147

<!-- 部署位置的唯一辨別符,用來比對站點和settings.xml檔案裡的配置 -->

1148

1149

<id> banseon-site </id>

1150

1151

<!-- 部署位置的名稱 -->

1152

1153

<name> business api website </name>

1154

1155

<!-- 部署位置的URL,按protocol://hostname/path形式 -->

1156

1157

<url>

1158

1159

scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web

1160

1161

</url>

1162

1163

</site>

1164

1165

<!-- 項目下載下傳頁面的URL。如果沒有該元素,使用者應該參考首頁。使用該元素的原因是:幫助定位那些不在倉庫裡的構件(由于license限制)。 -->

1166

1167

<downloadUrl />

1168

1169

<!-- 如果構件有了新的group ID和artifact ID(構件移到了新的位置),這裡列出構件的重定位資訊。 -->

1170

1171

<relocation>

1172

1173

<!-- 構件新的group ID -->

1174

1175

1176

1177

<!-- 構件新的artifact ID -->

1178

1179

1180

1181

<!-- 構件新的版本号 -->

1182

1183

1184

1185

<!-- 顯示給使用者的,關于移動的額外資訊,例如原因。 -->

1186

1187

<message />

1188

1189

</relocation>

1190

1191

<!-- 給出該構件在遠端倉庫的狀态。不得在本地項目中設定該元素,因為這是工具自動更新的。有效的值有:none(預設),converted(倉庫管理者從Maven 1 POM轉換過來),partner(直接從夥伴Maven 2倉庫同步過來),deployed(從Maven 2執行個體部署),verified(被核實時正确的和最終的)。 -->

1192

1193

<status />

1194

1195

1196

1197

<!-- 以值替代名稱,Properties可以在整個POM中使用,也可以作為觸發條件(見settings.xml配置檔案裡activation元素的說明)。格式是<name>value</name>。 -->

1198

1199

1200

1201

</project>

若轉載請注明出處!若有疑問,請回複交流!