IDEAは、Tomcatの起動後にMaven-Alibaba Cloudイメージ、不完全なディレクトリ構造、404を作成します


IDEAで初めてMavenを使用したときは、さまざまな構成や環境で多くの時間を費やしました。

完全なディレクトリ構造:
ここに画像の説明を挿入します

1つは、Mavenのインストールおよび構成環境変数です。

公式ダウンロードリンク:https://archive.apache.org/dist/maven/maven-3/

1.最新のダウンロードを選択しないことをお勧めします。初めて使用したときは、Maven 3.6.3 + IDEA 2020.3でした。その結果、常に使用できませんでした。その後、Maven 3.3.9 + IDEA 2019.3を選択しました(通常、IDEA2020とMaven3.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>

以下はAlibabaCloudの画像です。setting.xmlのmirrorsタグに配置する必要があります。HuaweiCloudなどの他の画像も利用できます。ただし、最新の要件は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を使用し、後のMaven2と3はM2_HOMEでした。保険期間中に両方が追加されます。
ここに画像の説明を挿入します

次に、cmdでmavenコマンドを使用するために、mavenのbinディレクトリをPATHに追加する必要があります。
ここに画像の説明を挿入します

いずれにせよ、1つを選択して追加するだけです。2つ目は相対パスの柔軟性が高いため、2つ目が後の検証で失敗した場合は、最初の絶対パスが使用されます。

4.確認し、win + Rし、cmdと入力してから、コマンドmvn -vを入力します。出力が成功した場合、Maven構成は成功しています。
ここに画像の説明を挿入します

2つ目は、IDEAがMavenプロジェクトを作成することです。

1. IDEAは主にここでJavaWebを作成するために使用されます。通常、複数のモジュールが使用されるため、最初はテンプレートを使用しないでください。常に最初に行きます。

(プロセス中に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. Webテンプレートを使用していないため、ディレクトリ構造が不完全です。同時に、サブテンプレートを作成し、最初にsrcディレクトリを削除してから、新しいテンプレートを作成する必要があります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

一般的に、Webテンプレートを選択すると、webappディレクトリが作成されますが、テンプレートを使用しても何も作成されないため、すべてのディレクトリ構造を自分で作成する必要があります。
ここに画像の説明を挿入します

**注:**テンプレートの作成後、次のエラーが発生する可能性があるため、無視してください。
ここに画像の説明を挿入します

4. src、test、webapp、その他のディレクトリを自分で作成します。

  1. サブテンプレートを右クリックして新しいディレクトリを選択し(サブテンプレートが必要ない場合は、プロジェクトディレクトリを右クリックします)、必要なディレクトリをいくつか作成します。

ここに画像の説明を挿入します

  1. 次に、Ctrl + Shift + Alt + Sでプロジェクト構造を開き、サブモジュールを選択してWebを追加します。最初に、これら2つのパスの下にディレクトリとファイルを作成します。次に、右下隅にある[アーティファクトの作成]をクリックします。

ここに画像の説明を挿入します

  1. サブモジュールのターゲットが作成され、後続の生成されたパッケージはすべてこのファイルに含まれます

ここに画像の説明を挿入します

  1. モジュールの出力ディレクトリを変更します(このコンパイル出力は親プロジェクトから継承され、自分で変更できます)

ここに画像の説明を挿入します

5.プロジェクトの出力ディレクトリを変更します(outはプロジェクト全体の出力として使用され、targetはモジュールの出力として使用されるため、最初にoutディレクトリを作成してから、プロジェクトのターゲットを削除する必要があります。 )

ここに画像の説明を挿入します

ここに画像の説明を挿入します

注:アーティファクトの出力場所を変更する必要があり、ターゲットに変更する必要があります。

ここに画像の説明を挿入します

5.テストでは、最初に2つの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>

3、Tomcatを構成します

1.ローカルTomcatを追加します
ここに画像の説明を挿入します

2.ローカルTomcatおよびその他のパラメーターを設定し、アーティファクトを追加します

ここに画像の説明を挿入します

3.展開、下の赤い円は、ブラウザにURLを入力するときに追加する必要があるものです。

ここに画像の説明を挿入します

4.プロジェクトを開始し、サーブレットのURLを入力します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

第4に、優れた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と入力して、SUCCESSBUILDが表示されるまでダウンロードできるかどうかを確認します。
ここに画像の説明を挿入します

成功した場合は、プロジェクトに戻ってリロードして更新し、3つすべての更新を試してください。
ここに画像の説明を挿入します

失敗した場合は、最後のエラーを確認してブラウザの翻訳にコピーします。AlibabaCloudに接続できない、確認が見つからないなどのエラーがある場合は、httpsが原因です。まず、コマンドがmaven-importの代わりに正しい入力。それでも入力が間違っている場合は、ミラーが無効であるか、mavenとideaのバージョンに問題がある可能性があります。

おすすめ

転載: blog.csdn.net/qq_39763246/article/details/113791089