Java的Mavan项目实践

2022-09-29 15:43:00 浏览数 (1)

[TOC]

Maven Web项目之Hello-World

Step 1.Eclipse新建Maven项目 PATH:File > New (ALT Shift N) -> Maven Project Step 2.选择AarchType 为 Web工程: Maven-archetype-webapp 1.0 , 其参数Artifact Id 为 hello-world 然后点击完成即可

WeiyiGeek.Maven-archetype-webapp

Step 3.创建后项目会报,所以我们需要配置jdk环境右键工程- build path - configration build path设置当前环境的jdk版本;

Step 4.打开 pom.xml 文件进行如下修改,添加编译环境和servlet接口包, 如果此时报错信息没有消失 右键工程 -> Maven -> update project;

代码语言:javascript复制
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.weiyigeek.main</groupId>
  <artifactId>hello-world</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>hello-world Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
   <!-- 系统依赖包 -->
  <dependencies>
  	  <!-- 单元测试依赖包 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      
    <!-- servlet接口包-运行环境包 -->
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
          <scope>provided</scope>
      </dependency>
      
  </dependencies>
  <build>
    <plugins>
       <!-- 配置java8 编译环境 -->
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
          <configuration>
              <source>1.8</source>
              <target>1.8</target>
          </configuration>
        </plugin>

      <!-- 添加Tomcat插件 -->
      <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <!-- Config: contextPath and Port (Default - /HelloSpringMVC : 8080) -->
          <configuration> 
            <path>/</path> 
            <port>80</port> 
             <uriEncoding>UTF-8</uriEncoding><!-- 非必需项 -->
          </configuration>
      </plugin>
    </plugins>

    <finalName>hello-world</finalName>
  </build>
</project>

Step 5. 修改 /hello-world/src/main/webapp/index.jsp 内容如下:

代码语言:javascript复制
<%@ page language="java" import="java.util.*" Encoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'>
    <meta name="author" content="WeiyiGeek" />
    <meta http-equiv="content-language" content="zh-CN"/>
  
    <title>WeiyiGeek Blog | 为了能到远方,脚下的每一步都不能少。</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="keywords" content="WeiyiGeek,网络安全,系统运维,安全测试,物联网与应用开发,网络技术,学习心得分享,唯一极客,DIY极客">
    <meta name="Description" content="WeiyiGeek Blog-关注于网络安全_物联网安全开发_网络运维,分享技术学习心得与入坑,提升自我网络安全技术与能力,立志维护大众网络安全为己任--中国梦,我的梦">
  <meta name="generator" content="Hexo 4.2.1"><link rel="alternate" href="/atom.xml" title="WeiyiGeek Blog" type="application/atom xml">
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
</head>
<body>
  <h1>Maven - Hello World</h1>
  <P>访问时间: <span id="time"></span></P>
  <%
  String SERVER_NAME = request.getServerName();
  String SERVER_ADDR = request.getLocalAddr();
  String SERVER_SOFTWARE = getServletContext().getServerInfo();
  String SCRIPT_NAME = request.getServletPath();
  String DOCUMENT_ROOT = request.getRealPath("/");
  String REMOTE_HOST = request.getRemoteHost();
  String REMOTE_ADDR = request.getRemoteAddr();
  String HTTP_USER_AGENT = request.getHeader("User-Agent");
  %>
  
<p> Server : <%=SERVER_SOFTWARE%>  | <%=SERVER_ADDR%> </p> 
<p> Client : <%=REMOTE_HOST%> | <%=REMOTE_ADDR %></p>
<p> Document_Root : <%= DOCUMENT_ROOT %>  <br/><br/> URL : <%=SERVER_NAME %><%= SCRIPT_NAME %>  </p>

  <script>
    var d = new Date();
    document.getElementById("time").innerHTML=d;
  </script>
  </body>
</html>

Step 6.工程项目->Run AS -> Maven Build -> 在弹出的goals框中输入 tomcat7:run 点击运行如下图所示

WeiyiGeek.tomcat7:run

PS : 在运行Maven Goal的时候一定要注意把 tomcat:run 改成 tomcat7:run,否则还是会运行默认的 Tomcat 6。否则将出现 org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException错误

Step 7.Maven 项目运行示例:

WeiyiGeek.Maven-HelloWorld

代码语言:javascript复制
 <repositories>
  <repository>
    <id>nexus</id>
    <url>http://maven.weiyigeek.top:8081/repository/maven-public/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

<!-- 设定插件仓库 -->
<pluginRepositories>
  <pluginRepository>
    <id>nexus</id>
    <url>http://maven.weiyigeek.top:8081/repository/maven-public/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </pluginRepository>
</pluginRepositories>

https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api

有些时候打包的时候需要指定Maven settings.xml(譬如从内部Nexus 私服获取依赖),如下:

mvn clean package -U –settings F:Mavensettings.xml -Dmaven.test.skip=true Maven 实用小技巧

Maven 打包跳过测试 通过 使用参数-DskipTests和-Dmaven.test.skip=true 指定,如下:

mvn clean package -Dmaven.test.skip=true

或者:

mvn clean package -DskipTests

这两个参数的主要区别是:

代码语言:javascript复制
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不编译测试用例类,也不执行测试用例

作者:FX_SKY 链接:https://www.jianshu.com/p/ac4c69525e6c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 人点赞