English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O POM (Project Object Model, Modelo de Objeto do Projeto) é a unidade de trabalho básica do Maven, é um arquivo XML que contém informações básicas do projeto, é usado para descrever como o projeto é construído, declarar dependências do projeto, etc.
Ao executar uma tarefa ou objetivo, o Maven procurará um POM no diretório atual. Ele lê o POM, obtém as informações de configuração necessárias e então executa o objetivo.
No POM pode ser especificada a seguinte configuração:
Dependências do projeto
Plugin
Objetivo de execução
Profile de construção do projeto
Versão do projeto
lista de desenvolvedores de projeto
Informações de lista de e-mails relacionados
Antes de criar o POM, precisamos primeiramente descrever o grupo do projeto (groupId), o ID exclusivo do projeto.
<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"> <!-- versão do modelo --> <modelVersion>4.0.0</modelVersion>/modelVersion> <!-- sinal único de empresa ou organização, e o caminho gerado durante a configuração também é gerado por ele, por exemplo, com.companyname.project-group, o Maven colocará o jar gerado pelo projeto no caminho local:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- ID único do projeto, pode haver vários projetos sob um groupId, que são distinguidos pelo artifactId --> <artifactId>project</artifactId> <!-- número da versão --> <version>1.0</version> </project>
Todos os arquivos POM precisam do elemento project e três campos obrigatórios: groupId, artifactId e version.
nó | descrição |
---|---|
project | tag raiz do projeto. |
modelVersion | A versão do modelo precisa ser configurada como 4.0。 |
groupId | Este é o identificador do grupo do projeto. Ele é geralmente único em uma organização ou projeto. Por exemplo, uma organização bancária com.companyname.project-group possui todos os projetos relacionados ao banco. |
artifactId | Este é o identificador do projeto. Ele geralmente é o nome do projeto. Por exemplo, banco de consumo. groupId e artifactId juntos definem a posição do artifact no repositório. |
versão | Este é o número da versão do projeto. No repositório do artifact, ele é usado para distinguir diferentes versões. Por exemplo: com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1 |
O (Super)POM pai é o POM padrão do Maven. Todos os POMs herdam de um POM pai (mesmo que o POM pai não seja definido explicitamente). O POM pai contém algumas configurações padrão que podem ser herdadas. Portanto, quando o Maven descobrir que precisa baixar dependências do POM, ele vai para o repositório padrão configurado no Super POM http://repo1.maven.org/maven2 Baixar.
O Maven usa o pom eficaz (Super pom mais configuração do projeto) para executar os objetivos relevantes, ajudando os desenvolvedores a fazer o menor número possível de configurações no pom.xml, claro que essas configurações podem ser sobrescritas.
Use o seguinte comando para ver a configuração padrão do Super POM:
mvn help:effective-pom
Vamos criar o diretório MVN/project, crie o arquivo pom.xml neste diretório, com o seguinte conteúdo:
<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"> <!-- versão do modelo --> <modelVersion>4.0.0</modelVersion>/modelVersion> <!-- sinal único de empresa ou organização, e o caminho gerado durante a configuração também é gerado por ele, por exemplo, com.companyname.project-group, o Maven colocará o jar gerado pelo projeto no caminho local:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- ID único do projeto, pode haver vários projetos sob um groupId, que são distinguidos pelo artifactId --> <artifactId>project</artifactId> <!-- número da versão --> <version>1.0</version> </project>
No console de comando, entre no MVN/diretório do projeto, execute os seguintes comandos:
C:\MVN\project>mvn help:effective-pom
O Maven começará a processar e exibir o effective-pom。
[INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:36 min [INFO] Finished at: 2018-09-05T11:31:28+08:00 [INFO] Final Memory: 15M/149M [INFO] ------------------------------------------------------------------------
O resultado do POM Eficaz é como é exibido no console, após a herança e interpolação, tornando a configuração eficaz.
<?xml version="1.0" encoding="UTF-8"?> <!-- ================================================================= --> <!-- --> <!-- Generated by Maven Help Plugin on 2012-07-05T11:41:51 --> <!-- See: http://maven.apache.org/plugins/maven-help-plugin/ --> <!-- --> <!-- ================================================================= --> <!-- ================================================================= --> <!-- --> <!-- Effective POM for project --> <!-- 'com.companyname.project-group:project-name:jar:1.0' --> <!-- --> <!-- ================================================================= --> <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 h ttp://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>/modelVersion> <groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version> <build <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory> <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory> <outputDirectory>C:\MVN\project\target\classes</outputDirectory> <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory> <resources <resource <mergeId>resource-0</mergeId> <directory>C:\MVN\project\src\main\resources</directory> </resource> </resources> <testResources <testResource <mergeId>resource-1</mergeId> <directory>C:\MVN\project\src\test\resources</directory> </testResource> </testResources> <directory>C:\MVN\project\target</directory> <finalName>project-1.0</finalName> <pluginManagement <plugins> <plugin> <artifactId>maven-antrun-plugin/artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin/artifactId> <version>2.2-beta-2</version> </plugin> <plugin> <artifactId>maven-clean-plugin/artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin/artifactId> <version>2.0.2</version> </plugin> <plugin> <artifactId>maven-dependency-plugin/artifactId> <version>2.0</version> </plugin> <plugin> <artifactId>maven-deploy-plugin/artifactId> <version>2.4</version> </plugin> <plugin> <artifactId>maven-ear-plugin/artifactId> <version>2.3.1</version> </plugin> <plugin> <artifactId>maven-ejb-plugin/artifactId> <version>2.1</version> </plugin> <plugin> <artifactId>maven-install-plugin/artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-jar-plugin/artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-javadoc-plugin/artifactId> <version>2.5</version> </plugin> <plugin> <artifactId>maven-plugin-plugin/artifactId> <version>2.4.3</version> </plugin> <plugin> <artifactId>maven-rar-plugin/artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-release-plugin/artifactId> <version>2.0-beta-8</version> </plugin> <plugin> <artifactId>maven-resources-plugin/artifactId> <version>2.3</version> </plugin> <plugin> <artifactId>maven-site-plugin/artifactId> <version>2.0-beta-7</version> </plugin> <plugin> <artifactId>maven-source-plugin/artifactId> <version>2.0.4</version> </plugin> <plugin> <artifactId>maven-surefire-plugin/artifactId> <version>2.4.3</version> </plugin> <plugin> <artifactId>maven-war-plugin/artifactId> <version>2.1-alpha-2</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-help-plugin/artifactId> <version>2.1.1</version> </plugin> </plugins> </build> <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Switchboard do Repositório Maven</name> <url>http://repo1.maven.org/maven2</web </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Repositório de Plugins Maven</name> <url>http://repo1.maven.org/maven2</web </pluginRepository> </pluginRepositories> <reporting> <outputDirectory>C:\MVN\project\target/site</outputDirectory> </reporting> </project>
No arquivo pom.xml acima, você pode ver a estrutura de diretório de código-fonte padrão do projeto, diretório de saída, plugins necessários, repositórios e diretórios de relatórios que o Maven precisa para executar o objetivo.
O arquivo pom.xml do Maven também não precisa ser escrito manualmente.
O Maven oferece uma série de plugins de protótipo para criar projetos, incluindo a estrutura do projeto e o arquivo pom.xml.
<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.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--Coordenadas do projeto pai. Se não for especificado o valor de um elemento no projeto, o valor correspondente no projeto pai será o valor padrão. As coordenadas incluem ID do grupo, ID do artefato e versão。 --> <parent> <!--Identificador do artefato do projeto pai herdado --> novo artifact ID do componente /> <!--Identificador global único do projeto pai herdado --> novo group ID do componente /> <!--Versão do projeto pai herdado --> novo número da versão do componente /> <!-- Caminho relativo do arquivo pom.xml do projeto pai. O caminho relativo permite que você escolha um caminho diferente. O valor padrão é ../pom.xml. O Maven primeiro busca o pom do projeto pai no local de construção do projeto atual Pom de destino, então na posição do sistema de arquivos (relativePath), em seguida, no repositório local, e finalmente no repositório remoto para encontrar o pom do projeto pai. --> <relativePath /> </parent> <!--Declara qual versão do modelo POM o descriptor de projeto segue. A versão do modelo em si raramente muda, embora assim seja, ela é essencial para garantir a estabilidade, especialmente quando o Maven introduz novas funcionalidades ou alterações no modelo. --> <modelVersion>4.0.0</modelVersion>/modelVersion> <!--Identificador global único do projeto, geralmente usado para distinguir este projeto de outros projetos usando o nome do pacote completo. E o caminho gerado durante a construção também é gerado por ele, por exemplo, o caminho relativo gerado por com.mycompany.app é:/com/mycompany/app --> <groupId>asia.banseon</groupId>/groupId> <!-- Identificador do artefato, que, juntamente com o ID de grupo, identifica de forma única um artefato. Em outras palavras, você não pode ter dois projetos diferentes com o mesmo artifact ID e groupID; em algum O artifact ID também deve ser único sob um ID de grupo específico. O artefato é algo gerado ou usado pelo projeto, incluindo artefatos gerados pelo Maven para o projeto: JARs, código-fonte, publicações binárias e WARs, entre outros. --> <artifactId>banseon</artifactId>-maven2</artifactId> <!--Tipo de artefato gerado pelo projeto, por exemplo, jar, war, ear, pom. Os plugins podem criar seus próprios tipos de artefatos, então a lista não é completa --> <packaging>jar</packaging>/packaging> <!--Versão atual do projeto, formatada como: versão principal.versão secundária.versão incremental-Versão limitada --> <version>1.0-SNAPSHOT</version> <!--Nome do projeto, usado pelos documentos gerados pelo Maven --> <name>banseon-maven</name> <!--URL da página inicial do projeto, usada pelos documentos gerados pelo Maven --> <url>http://www.baidu.com/banseon</web <!-- Descrição detalhada do projeto, usada pelos documentos gerados pelo Maven. Quando este elemento pode ser descrito em formato HTML (por exemplo, o texto dentro de CDATA é ignorado pelo analisador, pode incluir HTML) Assinatura), não encoraja o uso de descrições de texto puro. Se precisar modificar a página de índice gerada pelo site web, deve modificar o seu próprio arquivo de página de índice, em vez de ajustar este documento. --> <description>Um projeto maven para estudar maven.</description>/description> <!--Descrição das condições prévias do ambiente de construção do projeto. --> <prerequisites <!--Versão mínima do Maven necessária para construir este projeto ou usar este plug-in --> <maven /> </prerequisites> <!--Nome e URL do sistema de gestão de problemas do projeto (Bugzilla, Jira, Scarab, ou qualquer sistema de gestão de problemas que você goste), neste exemplo é jira --> <issueManagement <!--Nome do sistema de gestão de problemas (por exemplo, jira), --> <system>jira</system> <!--URL do sistema de gestão de problemas do projeto --> <url>http://jira.baidu.com/banseon</web </issueManagement> <!--Informações de integração contínua do projeto --> <ciManagement <!--Nome do sistema de integração contínua, por exemplo, continuum --> <system /> <!--URL do sistema de integração contínua do projeto (se o sistema de integração contínua tiver interface web). --> <url /> <!--Desenvolvedores que precisam ser notificados quando a construção for concluída/Opções de configuração do usuário. Inclui informações sobre os notificados e condições de notificação (erro, falha, sucesso, aviso) --> <notifiers <!--Configurar um método para notificar o usuário quando a construção for interrompida/Desenvolvedor --> <notifier <!--Método de transmissão das notificações --> <type /> <!--Notificar quando ocorrer um erro --> <sendOnError /> <!--Notificar quando a construção falhar --> <sendOnFailure /> <!--Notificar quando a construção for bem-sucedida --> <sendOnSuccess /> <!--Notificar quando ocorrer um aviso --> <sendOnWarning /> <!--Não recomendado para uso. Para onde enviar as notificações --> <address /> <!--Opções de configuração extendidas --> <configuration /> </notifier> </notifiers> </ciManagement> <!--Ano de criação do projeto,4Um número. Este valor deve ser usado ao gerar informações de direitos autorais. --> <inceptionYear /> <!--Informações sobre as listas de e-mail relacionadas ao projeto --> <mailingLists> <!--Este elemento descreve todas as listas de e-mail relacionadas ao projeto. O site gerado automaticamente usa essas informações. --> <mailingList> <!--Nome do e-mail --> <name>Demo</name> <!--Endereço ou link do e-mail para envio, se for um endereço de e-mail, o link mailto: será automaticamente criado durante a criação do documento --> <post>[email protected]</post> <!--Endereço ou link do e-mail da assinatura, se for um endereço de e-mail, o link mailto: será automaticamente criado durante a criação do documento --> <subscribe>[email protected]</subscribe> <!--endereço ou link para cancelar a inscrição de e-mail, se for um endereço de e-mail, será criado automaticamente um link mailto: ao criar o documento --> <unsubscribe>[email protected]</unsubscribe> <!--Você pode navegar pela URL das informações de e-mail --> <archive>http:/hi.baidu.com/localhost/demo/dev/</archive> </mailingList> </mailingLists> <!--lista de desenvolvedores de projeto --> <developers <!--informações sobre um desenvolvedor de projeto --> <developer <!--identificador único do desenvolvedor do projeto no SCM --> <id>HELLO WORLD</id> <!--nome completo do desenvolvedor do projeto --> <name>banseon</name> <!--email do desenvolvedor do projeto --> <email>[email protected]</email> <!--URL da página inicial do desenvolvedor do projeto --> <url /> <!--roles do desenvolvedor do projeto no projeto, o elemento role descreve vários tipos de roles --> <roles <role>Gerente de Projeto</role> <role>Arquiteto</role> </roles> <!--organização à qual o desenvolvedor do projeto pertence --> <organization>demo</organization> <!--URL da organização à qual o desenvolvedor do projeto pertence --> <organizationUrl>http://hi.baidu.com/banseon</organizationUrl> <!--propriedades do desenvolvedor do projeto, como como lidar com mensagens instantâneas, etc --> <properties <dept>No</dept> </properties> <!--fuso horário do desenvolvedor do projeto, -11até12inteiro dentro do intervalo. --> <timezone-5</timezone> </developer> </developers> <!--lista de outros contribuintes do projeto --> <contributors <!--outros contribuintes do projeto. Veja também developers/elemento developer --> <contributor <name /> <email /> <url /> <organization /> <organizationUrl /> <roles /> <timezone /> <properties /> </contributor> </contributors> <!--Este elemento descreve a lista de licenças de todos os projetos. Deve ser listada apenas a lista de licenças do projeto, não a lista de licenças de projetos dependentes. Se forem listadas várias licenças, o usuário pode escolher uma delas em vez de aceitar todas as licenças. --> <licenses> <!--Descrição da licença do projeto, usada para gerar a página de licença do site web do projeto, outros relatórios e validações também usam esse elemento. --> <license> <!--Nome jurídico da licença --> <name>Apache 2</name> <!--URL da página oficial do texto da licença --> <url>http://www.baidu.com/localhost/LICENSE-2.0.txt</web <!--O método principal de distribuição do projeto: repo, pode ser baixado do repositório Maven manualmente, o usuário deve baixar e instalar manualmente as dependências --> <distribution>repo</distribution> <!--Informações adicionais sobre a licença --> <comments>Informações adicionais sobre a licença-licença OSS amigável</comments> </license> </licenses> <!--O rótulo SCM (Source Control Management) permite que você configure seu repositório de código, para uso no site web do Maven e por outros plugins. --> <scm> <!--URL do SCM, que descreve o repositório de versão e como conectar ao repositório. Para mais detalhes, consulte o formato e a lista de URLs fornecidas pelos SCMs. Esta conexão é apenas de leitura. --> <connection> scm:svn:http://scp:/localhost/maven/localhost/localhost-maven2-trunk(dao-trunk) </connection> <!--Para desenvolvedores, semelhante ao elemento connection. Isso significa que a conexão não é apenas de leitura --> <developerConnection> scm:svn:http://scp:/localhost/maven/localhost/dao-trunk </developerConnection> <!--Tag do código atual, no estágio de desenvolvimento, o padrão é HEAD --> <tag /> <!--URL que aponta para o repositório de SCM do projeto (por exemplo, ViewVC ou Fisheye). --> <url>http://scp:/banseon</web </scm> <!--Descrição de várias propriedades da organização a que o projeto pertence. Os documentos gerados pelo Maven usam --> <organization> <!--Nome completo da organização --> <name>demo</name> <!--URL da página inicial da organização --> <url>http://www.baidu.com/banseon</web </organization> <!--Informações necessárias para construir o projeto --> <build <!--Este elemento configura o diretório do código-fonte do projeto. Durante a construção do projeto, o sistema de construção compila o código-fonte no diretório. Este caminho é uma referência relativa ao pom.xml. --> <sourceDirectory /> <!--Este elemento configura o diretório do código-fonte do script do projeto, que é diferente do diretório de código-fonte: na maioria dos casos, o conteúdo deste diretório será copiado para o diretório de saída (porque os scripts são interpretados, não compilados). --> <scriptSourceDirectory /> <!--Este elemento define o diretório de código-fonte usado pelo teste unitário do projeto, ao testar o projeto, o sistema de construção compila o código-fonte no diretório. Este caminho é uma caminho relativo ao pom.xml. --> <testSourceDirectory /> <!--Diretório onde os arquivos de classe compilados da aplicação são armazenados. --> <outputDirectory /> <!--Diretório onde os arquivos de classe compilados do teste são armazenados. --> <testOutputDirectory /> <!--Usar uma série de extensões de construção do projeto --> <extensions> <!--Descrição da extensão de construção usada --> <extension> <!--groupId da extensão de construção --> novo group ID do componente /> <!--artifactId da extensão de construção --> novo artifact ID do componente /> <!--Versão da extensão de construção --> novo número da versão do componente /> </extension> </extensions> <!--Quando o projeto não especificar um destino (Maven2 padrão quando chamado (por exemplo, Maven) --> <defaultGoal /> <!--Este elemento descreve a lista de rotas de recursos relacionados ao projeto, por exemplo, arquivos de propriedades relacionados ao projeto, esses recursos são incluídos no arquivo de打包 final. --> <resources <!--Este elemento descreve todas as rotas de recursos relacionadas ao projeto ou ao teste --> <resource <!-- Descrição do caminho de destino dos recursos. O caminho é relativo ao diretório target/diretório classes (por exemplo ${project.build.outputDirectory}). Dê um exemplo Sub, se você quiser que os recursos estejam em um pacote específico (org.apache.maven.messages), você deve definir esse elemento como org/apache/maven /messages. No entanto, se você apenas quiser colocar os recursos na estrutura do diretório do código-fonte, não é necessário essa configuração. --> <targetPath /> <!--Usar valores de parâmetro em vez de nomes de parâmetro. Os valores dos parâmetros são extraídos do elemento properties ou das propriedades configuradas no arquivo, o arquivo está listado no elemento filters. --> <filtering /> <!--Descrição do diretório onde os recursos são armazenados, o caminho é relativo ao caminho do POM --> <directory /> <!--Lista de padrões a serem incluídos, por exemplo**/*.xml. --> <includes /> <!--Lista de padrões a serem excluídos, por exemplo**/*.xml --> <excludes /> </resource> </resources> <!--Este elemento descreve todas as rotas de recursos relacionados aos testes unitários, por exemplo, arquivos de propriedades relacionados aos testes unitários. --> <testResources <!--Este elemento descreve todas as rotas de recursos relacionados ao teste, consulte build/resources/Descrição do elemento resource --> <testResource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </testResource> </testResources> <!--Diretório onde todos os arquivos gerados pela construção são armazenados --> <directory /> <!--Nome do arquivo do componente gerado, o valor padrão é ${artifactId}-${version} --> <finalName /> <!--Lista de arquivos de propriedades do filtro usados quando o interruptor de filtragem está ativado --> <filters /> <!--Informações padrão do plugin que podem ser referenciadas pelos subprojetos. Esta configuração do plugin será analisada ou vinculada ao ciclo de vida apenas quando for referenciada. Qualquer configuração local do plugin substituirá a configuração aqui. --> <pluginManagement <!--Lista de plugins usados. --> <plugins> <!--O elemento plugin contém informações necessárias para o plugin. --> <plugin> <!--O ID do grupo no repositório do plugin --> novo group ID do componente /> <!--ID do artifact no repositório do plugin --> novo artifact ID do componente /> <!--Versão do plugin usado (ou faixa de versão) --> novo número da versão do componente /> <!--Se o download de extensões Maven (por exemplo, pacote e processador de tipo) do plugin será habilitado, devido a razões de desempenho, este elemento só será configurado como habilitado quando realmente necessário. --> <extensions /> <!--Configuração para executar um grupo de alvos no ciclo de vida da construção. Cada alvo pode ter uma configuração diferente. --> <executions <!--O elemento execution contém informações necessárias para a execução do plugin --> <execution <!--Identificador do alvo de execução, usado para identificar o alvo no processo de construção ou para combinar alvos de execução necessários na herança --> <id /> <!--Vincula o alvo ao estágio do ciclo de vida da construção, se omitido, o alvo será vinculado ao estágio padrão configurado no dados originais, se omitido. --> <phase /> <!--Alvo de execução da configuração --> <goals /> <!--Se a configuração será propagada para o sub-POM --> <inherited /> <!--Configuração como objeto DOM --> <configuration /> </execution> </executions> <!--Dependências adicionais necessárias para a introdução do plugin do projeto --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--qualquer configuração é propagada para os subprojetos --> <inherited /> <!--Configuração como objeto DOM --> <configuration /> </plugin> </plugins> </pluginManagement> <!--Lista de plugins usados --> <plugins> <!--Verifique build/pluginManagement/plugins/elemento plugin --> <plugin> novo group ID do componente /> novo artifact ID do componente /> novo número da versão do componente /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </build> <!--Profiles de construção listados no projeto, se ativados, modificarão o processo de construção --> <profiles> <!--Ativa um processo de construção específico com base em parâmetros de ambiente ou parâmetros de linha de comando --> <profile> <!--Identificador exclusivo da configuração de construção. É usado para ativação em linha de comando, bem como para mesclar profiles com o mesmo identificador em herança. --> <id /> <!--Lógica de condição que aciona automaticamente o perfil. A ativação é a chave de abertura do perfil. O poder do perfil vem do fato de que ele pode usar automaticamente certos valores em certos ambientes específicos; esses ambientes são especificados pelo elemento activation. O elemento activation não é a única maneira de ativar o perfil. --> <activation> <!--Sinalizador de ativação padrão do perfil --> <activeByDefault /> <!--Quando o JDK correspondente for detectado, o perfil será ativado. Por exemplo,1.4Ativar JDK1.4,1.4.0_2, mas!1.4Ativar todas as versões que não começam com1.4JDK inicial. --> <jdk /> <!--Quando a propriedade do sistema operacional correspondente for detectada, o perfil será ativado. O elemento os pode definir algumas propriedades relacionadas ao sistema operacional. --> <os> <!--Nome do sistema operacional para ativar o perfil --> <name>Windows XP</name> <!--Família do sistema operacional para ativar o perfil (por exemplo, 'windows') --> <family>Windows</family> <!--Arquitetura do sistema operacional para ativar o perfil --> <arch>x86</arch> <!--Versão do sistema operacional para ativar o perfil --> <version>5.1.2600</version> </os> <!--Se o Maven detectar uma propriedade específica (seu valor pode ser referenciado no POM através de ${nome}), ele possui o nome e o valor correspondentes, o perfil será ativado. Se o campo de valor estiver vazio, o campo de nome da propriedade ativarão o perfil, caso contrário, haverá correspondência de valor de campo de forma case-sensitive. --> <property> <!--Nome da propriedade que ativa o perfil --> <name>mavenVersion</name> <!--Valor da propriedade que ativa o perfil --> <value2.0.3</value> </property> <!--Forneça um nome de arquivo, ativando o perfil através da verificação da existência ou não do arquivo. missing verifica se o arquivo existe, se não existir, ativa o perfil. Por outro lado, exists verifica se o arquivo existe, se existir, ativa o perfil. --> <file <!--Se o arquivo especificado existir, ative o perfil. --> <exists/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> <!--Se o arquivo especificado não existir, ative o perfil. --> <missing/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing> </file> </activation> <!--Informações necessárias para a construção do projeto. Verifique o elemento build --> <build <defaultGoal /> <resources <resource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </resource> </resources> <testResources <testResource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </testResource> </testResources> <directory /> <finalName /> <filters /> <pluginManagement <plugins> <!--Verifique build/pluginManagement/plugins/elemento plugin --> <plugin> novo group ID do componente /> novo artifact ID do componente /> novo número da versão do componente /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </pluginManagement> <plugins> <!--Verifique build/pluginManagement/plugins/elemento plugin --> <plugin> novo group ID do componente /> novo artifact ID do componente /> novo número da versão do componente /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </build> <!--Módulos (às vezes chamados de subprojetos) são construídos como parte do projeto. Cada elemento de módulo listado é um caminho relativo para o diretório do módulo --> <modules /> <!--Lista de repositórios remotos de dependências e extensões encontrados. --> <repositories> <!--Verifique repositories/repository元素 --> <repository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </repository> </repositories> <!--Lista de repositórios remotos de plugins encontrados, usados para construção e relatórios --> <pluginRepositories> <!--Contém informações necessárias para conectar a repositórios remotos de plugins. Veja repositories/repository元素 --> <pluginRepository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </pluginRepository> </pluginRepositories> <!--Este elemento descreve todas as dependências relacionadas ao projeto. Essas dependências compõem várias etapas do processo de construção do projeto. Eles são automaticamente baixados dos repositórios definidos no projeto. Para obter mais informações, consulte o mecanismo de dependência do projeto. --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--não é recomendado usar. Agora o Maven ignora esse elemento. --> <reports /> <!--Este elemento inclui as especificações para a geração de relatórios usando plugins de relatórios. Quando o usuário executar "mvn site", esses relatórios serão executados. Os links para todos os relatórios podem ser vistos na barra de navegação da página. Verifique o elemento reporting --> <reporting> ...... </reporting> <!--Verifique o elemento dependencyManagement --> <dependencyManagement> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> </dependencyManagement> <!--Verifique o elemento distributionManagement --> <distributionManagement> ...... </distributionManagement> <!--Veja o elemento properties --> <properties /> </profile> </profiles> <!--Módulos (às vezes chamados de subprojetos) são construídos como parte do projeto. Cada elemento de módulo listado é um caminho relativo para o diretório do módulo --> <modules /> <!--Lista de repositórios remotos de dependências e extensões encontrados. --> <repositories> <!--Contém informações necessárias para conectar a repositórios remotos --> <repository> <!--como lidar com o download de versões de lançamento nos repositórios remotos --> <releases> <!--true ou false indica se o repositório deve habilitar o download de um tipo de componente (versão de lançamento, snapshot) ou não. --> <enabled /> <!--Este elemento especifica a frequência da atualização. O Maven compara o timestamp do POM local e remoto. As opções são: always (sempre), daily (padrão, diariamente), interval: X (aqui X é o intervalo em minutos) ou never (nunca). --> <updatePolicy /> <!--O que fazer quando o Maven falha na verificação do arquivo de verificação do componente: ignore (ignorar), fail (falhar) ou warn (aviso)? --> <checksumPolicy /> </releases> <!-- como lidar com o download de versões snapshot nos repositórios remotos. Com as configurações releases e snapshots, o POM pode adotar diferentes política. Por exemplo, alguém pode decidir habilitar o download de versões snapshot apenas para fins de desenvolvimento. Veja repositories/repository/elemento releases --> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <!--Identificador único do repositório remoto. Pode ser usado para coincidir com o repositório remoto configurado no arquivo settings.xml --> <id>banseon-repository-proxy</id> <!--Nome do repositório remoto --> <name>banseon-repository-proxy</name> <!--URL do repositório remoto, conforme protocolo://hostname/path形式 --> <url>http://192.168.1.169:9999/repository/</web <!-- é o tipo de layout de repositório usado para localizar e classificar componentes-pode ser default (padrão) ou legacy (obsoleto). Maven 2fornece um layout padrão para seus repositórios; então Enquanto isso, Maven 1.x possui um layout diferente. Podemos usar esse elemento para especificar se o layout é default (padrão) ou legacy (obsoleto). --> <layout>default</layout> </repository> </repositories> <!--Lista de repositórios remotos de plugins encontrados, usados para construção e relatórios --> <pluginRepositories> <!--Contém informações necessárias para conectar a repositórios remotos de plugins. Veja repositories/repository元素 --> <pluginRepository> ...... </pluginRepository> </pluginRepositories> <!--Este elemento descreve todas as dependências relacionadas ao projeto. Essas dependências compõem várias etapas do processo de construção do projeto. Eles são automaticamente baixados dos repositórios definidos no projeto. Para obter mais informações, consulte o mecanismo de dependência do projeto. --> <dependencies> <dependency> <!--ID do grupo da dependência --> <groupId>org.apache.maven</groupId> <!--ID do artifact da dependência --> <artifactId>maven-artifact</artifactId> <!--Número da versão da dependência. No Maven 2também pode ser configurado como um intervalo de versão. --> <version>3.8.1</version> <!-- Tipo de dependência, o tipo padrão é jar. Ele geralmente representa a extensão do arquivo da dependência, mas há exceções. Um tipo pode ser mapeado para outra extensão ou classificador. O tipo geralmente corresponde ao método de empacotamento usado. Embora isso também tenha exceções. Alguns exemplos de tipos: jar, war, ejb-client e test-jar. Se o extensions for definido como true, é possível definir novos tipos dentro do plugin. Portanto, as instâncias do tipo anteriores não estão completas. --> <type>jar</type> <!-- Classificador de dependência. O classificador pode distinguir componentes pertencentes ao mesmo POM, mas diferentes métodos de construção. O nome do classificador é adicionado ao número da versão do arquivo. Por exemplo, se você quiser construir dois artefatos separados: JAR, um usando Java 1.4Compilador, outro usando Java 6Compilador, você pode usar o classificador para gerar dois artefatos JAR separados. --> <classifier></classifier> <!--Escopo de dependência. Durante o processo de lançamento do projeto, ajuda a determinar quais componentes são incluídos. Para mais detalhes, consulte o mecanismo de dependência. - compile: Escopo padrão, usado para compilação - provided: Semelhante à compilação, mas suporta o JDK ou contêiner esperado, semelhante ao classpath - runtime: Necessário para execução - test: Usado quando a tarefa test é executada - system: Precisa de fornecimento externo do elemento correspondente. Pode ser obtido através de systemPath. - systemPath: Apenas para o escopo system. Fornece o caminho correspondente. - opcional: Quando o projeto próprio é dependência, indica se a dependência é transmitida. Usado para dependências contínuas. --> <scope>test</scope> <!--Apenas para uso no escopo system. Atenção, não é incentivado o uso deste elemento e ele pode ser substituído em novas versões. O elemento especifica um caminho no sistema de arquivos para a dependência. É necessário um caminho absoluto em vez de um caminho relativo. Recomenda-se usar atributos que correspondem a caminhos absolutos, como ${java.home}. --> <systemPath></systemPath> <!--ao calcular dependências transitivas, liste as coleções de componentes de dependência excluídos da lista de componentes de dependência. Isso informa ao Maven que você depende apenas dos projetos especificados, não dos dependentes dos projetos. Este elemento é usado principalmente para resolver problemas de conflito de versão. --> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> <!--dependência opcional, se você declarar a dependência C como opcional no projeto B, você precisará explicitamente referenciar a dependência C no projeto que depende de B (por exemplo, projeto A). As dependências opcionais interrompem a transitividade das dependências. --> <optional>true</optional> </dependency> </dependencies> <!--não é recomendado usar. Agora o Maven ignora esse elemento. --> <reports></reports> <!--esse elemento descreve o padrão usado para gerar relatórios com plugins de relatório. Quando o usuário executar "mvn site", esses relatórios serão executados. Os links para todos os relatórios estarão visíveis na barra de navegação da página. --> <reporting> <!--true, então, o site não inclui relatórios padrão. Isso inclui os relatórios no menu "informações do projeto". --> <excludeDefaults /> <!--onde todos os relatórios gerados são armazenados. O valor padrão é ${project.build.directory}/site。 --> <outputDirectory /> <!--plugins de relatório usados e suas configurações. --> <plugins> <!--o elemento plugin contém informações necessárias para o plugin de relatório --> <plugin> <!--ID do grupo do plugin de relatório no repositório --> novo group ID do componente /> <!--ID do artifact do plugin de relatório no repositório --> novo artifact ID do componente /> <!--versão do plugin de relatório usado (ou faixa de versão) --> novo número da versão do componente /> <!--qualquer configuração é propagada para os subprojetos --> <inherited /> <!--configuração do plugin de relatório --> <configuration /> <!--multiplos padrões de grupo de relatórios, cada padrão pode ter diferentes configurações. Um padrão (coleção de relatórios) corresponde a um alvo de execução. Por exemplo, há1,2,3,4,5,6,7,8,9relatórios.1,2,5constitui o conjunto A de relatórios, correspondendo a um alvo de execução.2,5,8constitui o conjunto B de relatórios, correspondendo a outro alvo de execução --> <reportSets> <!--representa uma coleção de relatórios e a configuração que gera essa coleção --> <reportSet> <!--identificador único da coleção de relatórios, usado ao herdar POM --> <id /> <!--a configuração dos relatórios usados ao gerar a coleção de relatórios --> <configuration /> <!--a configuração é herdada pelos subPOMs? --> <inherited /> <!--esta coleção usa quais relatórios --> <reports /> </reportSet> </reportSets> </plugin> </plugins> </reporting> <!-- 继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和 artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID 匹配到这里的依赖,并使用这里的依赖信息。 --> <dependencyManagement> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> </dependencyManagement> <!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 --> <distributionManagement> <!--部署项目产生的构件到远程仓库需要的信息 --> <repository> <!--是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素 --> <uniqueVersion /> <id>banseon-maven2</id> <name>banseon maven2</name> <url>file://${basedir}/target/deploy</web <layout /> </repository> <!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 --> <snapshotRepository> <uniqueVersion /> <id>banseon-maven2</id> <name>Banseon-maven2 Snapshot Repository</name> <url>scp://scp:/svn.baidu.com/usr/local/maven-snapshot</web <layout /> </snapshotRepository> <!--部署项目的网站需要的信息 --> <site> <!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 --> <id>banseon-site</id> <!--部署位置的名称 --> <name>business api website</name> <!--部署位置的URL,按protocol://hostname/path形式 --> <url> scp://scp:/svn.baidu.com/banseon:/var/www/localhost-banseon </web </url> <!--site> --> URL da página de download do projeto. Se este elemento não existir, o usuário deve referenciar a página inicial. O motivo de usar este elemento é: ajudar a localizar componentes que não estão no repositório (por restrições de licença). /> <!--<downloadUrl --> se o componente tiver um novo group ID e artifact ID (mudou para um novo local), aqui estão as informações de relocalização do componente. <!--<relocation> --> novo group ID do componente /> <!--<groupId --> novo artifact ID do componente /> <!--<artifactId --> novo número da versão do componente /> <!--<version --> informações adicionais mostradas ao usuário sobre a movimentação, por exemplo, a razão. /> </<message <!-- relocation> dado o estado do componente no repositório remoto. Não configure este elemento no projeto local, pois é atualizado automaticamente pelo ferramental. Valores válidos: none (padrão), converted (administrador do repositório), 1 Maven 2sincronizado para o repositório), deployed (do POM do Maven), partner (diretamente do Maven do parceiro), 2Exemplo de Deploy), verified (correto e final após verificação). --> <status /> </distributionManagement> <!--Substitua o nome pelo valor, as Properties podem ser usadas em todo o POM e também como condições de ativação (veja a descrição do elemento activation no arquivo de configuração settings.xml). O formato é <name>value</name>。 --> <properties /> </project>