IDEA는 Maven-Alibaba Cloud 이미지, 불완전한 디렉토리 구조, Tomcat 시작 후 404 생성


처음 IDEA에서 Maven을 사용했을 때 다양한 구성과 환경에서 많은 시간을 보냈습니다. !

전체 디렉토리 구조 :
여기에 사진 설명 삽입

하나, Maven 설치 및 구성 환경 변수

공식 다운로드 링크 : https://archive.apache.org/dist/maven/maven-3/

1. 최신 다운로드를 선택하지 않는 것이 좋습니다. 처음 사용했을 때는 Maven 3.6.3 + IDEA 2020.3이었는데, 그 결과 항상 사용할 수 없었습니다. Alibaba Cloud 미러. 그런 다음 Maven 3.3.9 + IDEA 2019.3을 선택했습니다 (일반적으로 IDEA 2020과 Maven 3.6.3이 모두 작동하지 않으면 실패하면 버전을 낮 춥니 다). Maven을 다운로드 할 때 bin-zip을 선택하고 압축을 풉니 다.
여기에 사진 설명 삽입

2. 압축 해제 후 새 폴더를 생성 할 위치를 찾은 다음 (로컬웨어 하우스로 다양한 jar 패키지를 배치) 구성을 위해 maven 디렉토리 -conf-setting.xml로 이동합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <!-- 下面这行代码需要自己添加,表明自己本地仓库的位置(实际上不加也可以,IDEA也能改)-->
  <localRepository>F:\Environment\repository</localRepository>

다음은 Alibaba Cloud 이미지 입니다 . setting.xml의 mirrors 태그에 넣어야합니다 .Huawei Cloud와 같은 다른 제품도 사용 가능합니다. 그러나 최신 요구 사항은 https를 사용하는 것입니다. 그러나 많은 방법을 시도했지만 실패했습니다. http를 사용하기로 선택한 다음 IDEA로 이동하여 보안 프로토콜을 무시합니다.

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3. 시스템 환경 변수 설정 여기에서 M2_HOME과 MAVEN_HOME의 차이점은 maven 버전입니다. 이전에는 Maven 1이 MAVEN_HOME을 사용했고 이후 maven 2와 3은 M2_HOME이었습니다. 보험 기간 동안 둘 다 추가되었습니다.
여기에 사진 설명 삽입

그런 다음 cmd에서 maven 명령을 사용하려면 maven의 bin 디렉토리를 PATH에 추가해야합니다.
여기에 사진 설명 삽입

어느 쪽이든 하나를 선택하여 추가하면됩니다. 두 번째는 상대 경로가 더 유연하다는 것입니다. 두 번째 경로가 나중에 검증에 실패하면 첫 번째 절대 경로가 사용됩니다.

4. win + R을 확인하고 cmd를 입력 한 다음 mvn -v 명령을 입력합니다. 출력이 성공하면 maven 구성이 성공한 것입니다.
여기에 사진 설명 삽입

둘째, IDEA는 Maven 프로젝트를 생성합니다.

1. 여기서 주로 JavaWeb을 생성하기 위해 IDEA를 사용하며 일반적으로 여러 모듈을 사용하므로 처음에는 템플릿을 사용하지 마십시오. 항상 다음으로 가십시오.

(이 과정에서 maven을 선택하면 먼저 IDEA의 내장 기능을 사용하거나 직접 선택하면 기본 설정이 입력 후 설정됩니다)
여기에 사진 설명 삽입

2. 새 프로젝트에 대한 기본 설정을 지정합니다.
여기에 사진 설명 삽입

고유 한 Maven 및웨어 하우스 및 구성 파일 선택
여기에 사진 설명 삽입

고유 한 JDK를 선택하고 자동 가져 오기 패키지를 확인한 다음 가져 오기 도구의 VM 옵션에 다음 명령을 입력합니다 (보안 프로토콜 무시, 그렇지 않으면 이전 Alibaba Cloud 이미지를 사용할 수 없음).

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

여기에 사진 설명 삽입

** 참고 : **이 명령을 입력 한 후에도 여전히 미러를 사용하지 못할 수 있습니다. 오류가 무엇인지주의하십시오. 버전을 낮추어 사용하실 수 있습니다. 사용하는 버전으로 변경하는 것이 좋습니다. , Maven 3.3.9 + IDEA 2019.3, 이것은 사용이 보장됩니다. 질문이 있으시면 저를 비공개로 할 수 있습니다.

3. 웹 템플릿을 사용하지 않기 때문에 디렉토리 구조가 불완전하며 동시에 하위 템플릿을 생성하고 먼저 src 디렉토리를 삭제 한 다음 새 템플릿을 생성해야합니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입

일반적으로 웹 템플릿을 선택하면 webapp 디렉토리가 있지만 템플릿을 사용해도 아무것도 없기 때문에 모든 디렉토리 구조를 직접 만들어야합니다.
여기에 사진 설명 삽입

** 참고 : ** 템플릿 생성 후 다음 오류가 발생할 수 있으므로 무시하십시오.
여기에 사진 설명 삽입

4. src, test, webapp 및 기타 디렉토리를 직접 만듭니다.

  1. 하위 템플릿을 마우스 오른쪽 단추로 클릭하고 새 디렉터리를 선택하고 (하위 템플릿이 필요하지 않은 경우 프로젝트 디렉터리를 마우스 오른쪽 단추로 클릭) 필요한 디렉터리를 여러 개 만듭니다.

여기에 사진 설명 삽입

  1. 그런 다음 Ctrl + Shift + Alt + S를 누르고 프로젝트 구조를 열고 웹을 추가 할 하위 모듈을 선택합니다. 먼저이 두 경로 아래에 디렉터리와 파일을 만듭니다. 그런 다음 오른쪽 하단에서 Create Aritifact를 클릭합니다.

여기에 사진 설명 삽입

  1. 하위 모듈에 대한 대상이 생성되고 이후에 생성 된 패키지는 모두이 파일에 있습니다.

여기에 사진 설명 삽입

  1. 모듈의 출력 디렉토리를 수정합니다 (이 컴파일 출력은 상위 프로젝트에서 상속되며 직접 변경할 수 있음).

여기에 사진 설명 삽입

5. 프로젝트의 출력 디렉토리를 수정합니다. (out은 전체 프로젝트의 출력으로 사용되고 target은 모듈의 출력으로 사용되므로 먼저 out 디렉토리를 만든 다음 프로젝트의 대상을 삭제해야합니다. )

여기에 사진 설명 삽입

여기에 사진 설명 삽입

참고 : 아티팩트의 출력 위치를 변경해야하며 대상으로 변경해야합니다.

여기에 사진 설명 삽입

5. 테스트를 위해 먼저 두 개의 maven pom.xml 및 web.xml의 내용을 채운 다음 index.jsp 및 TestServlet.java를 만듭니다.

1613031303796

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>org.example</groupId>
    <artifactId>untitled</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>untitled1</module>
    </modules>
    <properties>
        <!-- 项目的默认构建编码  -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

TestServlet.java

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class TestServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doGet(req, resp);
    }
}

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>测试</h1>
</body>
</html>

셋, Tomcat 구성

1. 로컬 Tomcat 추가
여기에 사진 설명 삽입

2. 로컬 Tomcat 및 기타 매개 변수를 설정하고 아티팩트를 추가하십시오.

여기에 사진 설명 삽입

3. 배포, 아래 빨간색 원은 브라우저에 URL을 입력 할 때 추가해야하는 항목입니다.

여기에 사진 설명 삽입

4. 프로젝트를 시작하고 서블릿의 URL을 입력합니다.
여기에 사진 설명 삽입

여기에 사진 설명 삽입

넷째, 좋은 Maven 프로젝트를 만드는 문제

1. Maven 프로젝트를 생성 할 때 다음과 같은 문제가 발생할 수 있습니다. 미러링이 잘못되어 플러그인이 다운로드되지 않습니다.

여기에 사진 설명 삽입

8 개의 오류보고 :

Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:2.5
Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:2.6
Cannot resolve plugin org.apache.maven.plugins:maven-jar-plugin:2.4
Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1
Cannot resolve plugin org.apache.maven.plugins:maven-surefire-plugin:2.12.4
Cannot resolve plugin org.apache.maven.plugins:maven-install-plugin:2.4
Cannot resolve plugin org.apache.maven.plugins:maven-deploy-plugin:2.7
Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3

해결 방법 : cmd를 열고 mvn help : system을 입력하고 SUCCESS BUILD가 나타날 때까지 성공적으로 다운로드 할 수 있는지 확인합니다.
여기에 사진 설명 삽입

성공하면 프로젝트로 돌아가서 다시로드하고 새로 고친 다음 세 가지 새로 고침을 모두 시도하십시오.
여기에 사진 설명 삽입

실패 할 경우 마지막 오류를 확인하여 브라우저 번역에 복사합니다. 알리바바 클라우드에 연결할 수없고 확인을 찾을 수없는 등의 오류가 발생하면 https로 인한 것입니다. 먼저 명령이 실행되는지 확인합니다. maven-import 대신 입력이 정확합니다. 입력이 여전히 잘못되면 미러가 유효하지 않거나 maven 및 idea 버전에 문제가있을 수 있습니다.

추천

출처blog.csdn.net/qq_39763246/article/details/113791089