Notes d'étude Tomcat intégrées à l'application Web Maven

Commencez par créer un projet Web Maven


Non


Deux ajoutent une configuration tomcat intégrée dans maven


<build>
    <plugins>
        <plugin>
            <artifactId> maven-compiler-plugin </artifactId>
            <version> 2.3.2 </version>
            <configuration>
                <source> 1.8 </source>
                <target> 1.8 </target>
            </configuration>
        </plugin>

        <plugin>
            <groupId> org.apache.tomcat.maven </groupId>
            <artifactId> tomcat7-maven-plugin </artifactId>
            <version> 2.2 </version>
            <configuration>
                <port> 8080 </port>
                <chemin > / </path>
            </configuration>
        </plugin>

<! - 配置 启动 类 ->
            <plugin>
                <groupId> org.apache.maven.plugins </groupId>
                <artifactId> maven-jar-plugin </artifactId>
                <version> 3.0.2 </version>
                < configuration>
                    <archive>
                        <manifest>
                            <addClasspath> true </addClasspath>
                            <classpathPrefix> lib / </classpathPrefix> <mainClass> com.twsm.embededtomcat.NewsWebMain </mainClass>
                        </manifest>
                    </archive>
                </ configuration >

<! - 打包 加入 依赖 的 包 ->
            <plugin>
                <groupId> org.apache.maven.plugins </groupId>
                <artifactId> maven-dependency-plugin </artifactId>
                <version> 2.10 </version>
                < exécutions>
                    <execution>
                        <id> copy-dependencies </id>
                        <phase> package </phase>
                        <goals>
                            <goal> copy-dependencies </goal>
                        </goals>
                        <configuration>
                            <outputDirectory> $ {project.build.directory} / lib </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            </plugin>
    </plugins>
</build>

 <! - 资源 输出 路径 配置 ->
        <resources>
            <resource>
                <directory> src / main / java </directory>
                <includes>
                    <include> ** / *. Properties </include>
                </includes>
                < ! - 是否 替换 资源 中 的 属性 ->
                <filtering> false </filtering>
            </resource>
            <resource>
                <directory> src / main / resources </directory>
                <includes>
                    <include> ** / *. * </include>
                </includes>
                <filtering> false </ filtrage>
            </resource>
            <resource>
                <directory> src / main / webapp </directory>
                <targetPath> $ {basedir} / target / webapp </targetPath>
                <includes>
                    <include> ** / *. * </include>
                </includes>
                <filtering> faux </filtering>
            </resource>
        </resources>
    </build>

 

Trois projets Web intègrent Tomcat pour réaliser l'opération de jar

 

3.1 Ajouter une dépendance Tomcat

<dependency>
    <groupId> org.apache.tomcat.embed </groupId>
    <artifactId> tomcat-embed-core </artifactId>
    <version> 8.5.51 </version>
</dependency>
<dependency>
    <groupId> org .apache.tomcat.embed </groupId>
    <artifactId> tomcat-embed-el </artifactId>
    <version> 8.5.51 </version>
</dependency>
<dependency>
    <groupId> org.apache.tomcat.embed < / groupId>
    <artifactId> tomcat-embed-jasper </artifactId>
    <version> 8.5.51 </version>
</dependency>

3.2 Fichier de configuration

application-local.properties
`` ``
# Paramètres de Tomcat
tomcat.port = 28080
tomcat.basedir = E: / fhcb10 / news-web / tomcat / basedir


application-rc.properties
`` ``
#Tomcat settings
tomcat.port = 28080
tomcat.basedir = / data / fhcb10 / news-web / tomcat /


3.3 Ajouter la configuration de la classe de chargement 

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/ **  
 * 环境 配置 加载 类
 * @author  
 * @date 2018/6/5 11:38  
 * /
classe publique EnvConfig {     journal de journalisation statique final privé = LoggerFactory.getLogger (EnvConfig.class);

    public static String port = null;

    public static String basedir = null;
    public static String filepath = null;
   / **
    *    
    * Configuration de chargement initial
    * @author
    * @date 2018/6/5 11:25  
    * @param []  
    * @return boolean  
    * /  
    public static boolean init () {         Configuration config;         try {             String env = System.getProperty ("env");             if (env == null) {                 log.info ("No configuration environment, use local configuration local");                 env = "local" ;             }             log.info ("L'environnement actuel est:" + env);             String fileName = "application" + "-" + env + ".properties";









            config = new PropertiesConfiguration (fileName);
            port = config.getString ("tomcat.port");
            if (port == null || port.isEmpty ()) {                 port = "8080";             }             basedir = config.getString ("tomcat.basedir");             filepath = config.getString ("filepath");             log.info ("===========================================");             log.info ("CONFIG");             log.info ("===========================================");             log.info ("port:" + port);             log.info ("docbase:" + basedir);             Journal.










            retourne vrai;
        } catch (Exception e) {             log.error (e.getMessage (), e);             retourne faux;         }     } }




3.4 Tomcat de démarrage intégré

package com.twsm.embededtomcat;

import com.twsm.embededtomcat.config.EnvConfig;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
/ **  
 * 内嵌 Tomcat 配置 启动 主 类
 * @author huangyan 
 * @date 2018/6/5 11:38  
 * /
public class NewsWebMain {     Private static Logger log = LoggerFactory.getLogger (NewsWebMain.class);     / **        *          * Tomcat 启动 主 类 方法      * @author huangyan       * @date 2018/6/5 11:39      * @param [args]        * @return void        * /  









    public static void main (String [] args) lance une exception {         try {             if (! EnvConfig.init ()) {                 log.info ("Impossible de charger le fichier de configuration.");                 System.exit (0);             }             // 1 . Créez un Tomcat             Tomcat intégré tomcat = new Tomcat ();             // 2. Définissez la valeur par défaut du port Tomcat sur 8080             final Integer webPort = Integer.parseInt (EnvConfig.port);             tomcat.setPort (Integer.valueOf (webPort));             / / 3. Définissez le répertoire de travail, tomcat doit utiliser ce répertoire pour écrire quelque chose de             final String baseDir = EnvConfig.basedir;             tomcat.setBaseDir (baseDir);             tomcat.getHost (). SetAutoDeploy (false);














            // 4. 设置 webapp 资源 路径
            String webappDirLocation = "webapp /";
            StandardContext ctx = (StandardContext) tomcat.addWebapp ("/", nouveau fichier (webappDirLocation) .getAbsolutePath ());
            log.info ("configuration de l'application avec basedir:" + nouveau fichier ("" + webappDirLocation) .getAbsolutePath ());
            log.info ("répertoire du projet:" + nouveau fichier (""). getAbsolutePath ());
            // 5. 设置 上下文 路 每 径
            String contextPath = "";
            ctx.setPath (contextPath);
            ctx.addLifecycleListener (nouveau Tomcat.FixContextListener ());
            ctx.setName ("news-web");
            System.out.println ("nom enfant:" + ctx. getName ());
            tomcat.getHost (). addChild (ctx);
           / * File additionWebInfClasses = new File ("");
            WebResourceRoot resources = new StandardRoot (ctx);
            resources.addPreResources (new DirResourceSet (resources, "/ WEB-INF / classes",
                    additionWebInfClasses.getAbsolutePath () + "/ classes", "/"));
            ctx.setResources (resources);
            * /
            log.info ("Le serveur a fini de charger la configuration et démarre ...");
            tomcat.start ();
            log.info ("Le serveur a démarré avec succès ");
            tomcat.getServer (). await ();
        } catch (Exception exception) {             log.error (" Le serveur n'a pas pu démarrer ", exception);         }     } }



3.5 Modifier le type d'emballage

3.5.1 En tant que package jar

<packaging> pot </packaging>

3.5.2 Créer un package de guerre

<packaging> guerre </packaging>

 

3.6 Compiler 

mvn clean package -Dmaven.test.skip = true

3.6 Fonctionnement

java -jar Denv = rc news-web.jar 

 

Introduction à quatre commandes d'exécution de paquetages maven

4.1 La différence entre le package maven, l'installation et le déploiement 

Le package mvn clean exécute sept étapes de nettoyage, de ressources, de compilation, de testResources, de testCompile, de test, de jar (empaquetage) dans l'ordre.
mvn clean install exécute 8 étapes de nettoyage, de ressources, de compilation, de testResources, de testCompile, de test, de jar (empaquetage), d'installation en séquence.
mvn clean deploy exécute neuf étapes de nettoyage, de ressources, de compilation, de testResources, de testCompile, de test, de jar (package), d'installation et de déploiement en séquence.
D'après l'analyse ci-dessus, les principales différences sont les suivantes,

La commande package terminé la compilation du projet, les tests unitaires et les fonctions d' emballage, mais n'a pas déployé le package jar exécutable (paquet de guerre ou toute autre forme d'emballage) à l'entrepôt de Maven local et l'entrepôt de serveur privé maven à distance. La
commande d' installation terminée le compilation de projet, tests unitaires et fonctions d'empaquetage. Parallèlement, le package jar exécutable (package war ou autre forme de package) est déployé dans l'entrepôt maven local, mais il n'est pas déployé dans l'entrepôt de serveur privé maven distant. Le
déploiement La commande termine la compilation du projet, les tests unitaires, la fonction d'empaquetage et déploie le package jar exécutable fini (package war ou autre forme de package) dans l'entrepôt maven local et l'entrepôt de serveur privé maven distant en même temps

 

4.2 Plugin Tomcat Maven 

tomcat7: exécuter 和 tomcat7: run-war

Configuration de cinq maven

5.1 Éléments de niveau supérieur 

  <localRepository /> Cette valeur indique le chemin du référentiel local du système de construction. La valeur par défaut: ~ / .m2 / repository 
  <interactiveMode /> indique si maven doit interagir avec l'utilisateur pour obtenir l'entrée. 
  Valeur par défaut true <usePluginRegistry / > si maven doit utiliser le plugin - Le fichier registry.xml est utilisé pour gérer la version du plug-in. La valeur par défaut false 
  <offline /> indique si maven doit s'exécuter en mode hors ligne. Cette configuration est très utile lorsque le serveur de build ne peut pas se connecter à l'entrepôt distant en raison de paramètres réseau ou de facteurs de sécurité. La valeur par défaut est false 
  <pluginGroups /> Si l'ID d'organisation (groupId) du plug-in n'est pas explicitement fourni, il est utilisé pour rechercher la liste des organisations de plug-in Id (groupId). Cet élément contient une liste d'éléments pluginGroup et chaque élément enfant contient un identifiant d'organisation (groupId). Lorsque nous utilisons un plugin et que nous ne fournissons pas l'ID d'organisation (groupId) pour celui-ci sur la ligne de commande, Maven utilisera cette liste. Par défaut, la liste contient   <servers />. Généralement, le téléchargement et le déploiement du référentiel 
sont définis dans les éléments référentiels et distributionManagement du fichier pom.xml . Cependant, en général, les informations telles que le nom d'utilisateur et le mot de passe ( certains accès à l'entrepôt nécessitent une authentification de sécurité ) ne doivent pas être configurées dans le fichier pom.xml. Ces informations peuvent être configurées dans 
 la liste des miroirs de téléchargement configurée pour la liste d'entrepôt dans 
  <mirrors /> . <mirrors> 
    <! - Télécharger les miroirs pour l'entrepôt donné. -> 
    <org.apache.maven.pluginsorg.codehaus.mojosettings.xml
      <! - L'identifiant unique de l'image. id est utilisé pour distinguer différents éléments de miroir. -> 
      <id> planetmirror.com </id> 
      <! - Nom du miroir -> 
      <name> PlanetMirror Australia </name> 
      <! - L'URL du miroir. Le système de construction donnera la priorité à l'utilisation de cette URL au lieu d'utiliser l'URL du serveur par défaut. -> 
      <url> http://downloads.planetmirror.com/pub/maven2 </url> 
      <! - L'identifiant du serveur mis en miroir. Par exemple, si nous voulons mettre en place un miroir du référentiel central Maven (http://repo.maven.apache.org/maven2/), nous devons définir cet élément sur central. Celui-ci doit être exactement le même que l'identifiant central de l'entrepôt central. -> 
      <mirrorOf> central </mirrorOf> 
    </mirror> 
  </mirrors>

Activation

Rôle: profilelogique conditionnelle pour le déclenchement automatique .
Comme pom.xmldans profile, profilesa fonction est de pouvoir utiliser automatiquement certaines valeurs dans certains environnements; ces environnements activationsont spécifiés par des éléments.
activationLes éléments ne sont pas profilele seul moyen de s'activer . settings.xmlL' activeProfileélément de fichier peut contenir profileun fichier id. profileIl peut également être activé explicitement en utilisant l'indicateur -P et une liste séparée par des virgules sur la ligne de commande (par exemple, -P test).

  <proxies /> 
  <profiles /> 
  <activeProfiles /> 
</settings>

5.2 Définir l'activation de plusieurs profils et la séquence de téléchargement 

<activeProfiles>
            <! - rendre le profil actif tout le temps ->
            <activeProfile> central-rep </activeProfile>
            <activeProfile> aliyun </activeProfile>
            <activeProfile> htsd-nexus </activeProfile>
            <activeProfile> htsd- nexus2 </activeProfile>
    </activeProfiles>

Six résumé 

  Ancien, le projet unique est très volumineux, il a donc rencontré de nombreux problèmes, et l'écrivez comme un enregistrement.

les références

http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html

https://www.cnblogs.com/dalianpai/p/11850539.html

 

Je suppose que tu aimes

Origine blog.csdn.net/u013380694/article/details/107573107
conseillé
Classement