Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

yizhihongxing

Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

在Java中,包是用来管理和组织类的,可以避免类名重复和冲突。包名是由完整类名组成的,例如com.example.myapp。约定俗成的做法是让包名和域名一致。

如何定义包

在Java源代码的开头,使用package关键字来定义包,例如:

package com.example.myapp;

这个语句的意思是,该文件中的Java代码都属于com.example.myapp这个包。

如何使用包

在Java类中,可以使用import关键字引入其他包中的类。例如:

import java.util.ArrayList;

这个语句的意思是,在当前类中使用ArrayList时,可以直接写ArrayList,而不需要写全称java.util.ArrayList

另外,在类名不冲突的情况下,也可以使用通配符*来导入整个包。例如:

import java.util.*;

这个语句的意思是,导入java.util包中的所有类。

环境变量

环境变量是系统变量,用来存储系统信息,例如Java的安装路径。在Java开发中,经常需要用到环境变量。

如何设置环境变量

在Windows系统中,可以在“控制面板”->“系统和安全”->“系统”->“高级系统设置”->“环境变量”中设置环境变量。

在Linux或Mac系统中,可以在/etc/profile文件或用户目录下的.bashrc文件中设置环境变量。例如,在.bashrc文件中添加以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH

这个脚本的意思是,将/usr/local/jdk1.8.0_181设置为Java的安装路径,并将$JAVA_HOME/bin添加到系统的PATH变量中,以便系统能够找到Java命令。

如何使用环境变量

在Java代码中,可以使用System.getenv()方法获取系统的环境变量。例如:

String javaHome = System.getenv("JAVA_HOME");

这个代码的意思是,获取环境变量JAVA_HOME的值,并赋给变量javaHome

访问控制

在Java中,通过访问控制来控制类、变量和方法的访问权限。Java有以下4种访问修饰符:publicprotecteddefault(默认)和private

public

public修饰符可以被任何类访问。例如:

public class MyClass {
    public int x;
    public void myMethod() {
        System.out.println("Hello World!");
    }
}

这个类和它的公共成员(变量和方法)可以被任何类访问。

protected

protected修饰符可以被本类、同一包中的类和子类访问。例如:

protected class MyClass {
    protected int x;
    protected void myMethod() {
        System.out.println("Hello World!");
    }
}

这个类和它的受保护的成员(变量和方法)可以被本类、同一包中的类和子类访问。

default

default修饰符可以被本类和同一包中的类访问。如果没有修饰符,即为default。例如:

class MyClass {
    int x;
    void myMethod() {
        System.out.println("Hello World!");
    }
}

这个类和它的默认成员(变量和方法)可以被本类和同一包中的类访问。

private

private修饰符只能被本类访问。例如:

class MyClass {
    private int x;
    private void myMethod() {
        System.out.println("Hello World!");
    }
}

这个类和它的私有成员(变量和方法)只能被本类访问。

Maven profile实现多环境打包

Maven是一种自动化构建工具,可以通过配置和插件来管理项目的编译、打包、测试、部署等过程。Maven支持多环境打包,也即对不同的环境(开发、测试、生产)生成不同的包。实现方法是通过使用Maven的profile机制。

如何使用Maven profile

在Maven的pom.xml文件中,使用<profiles>元素来定义profile。例如:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

这段代码的意思是,定义了3个profile(devtestprod),每个profile中都有一个env属性,分别设置为devtestprod

同时,在<build>元素中,使用<resources>元素来定义要打包的文件和目录。例如:

<build>
    <resources>
        <resource>
            <directory>src/main/resources/${env}</directory>
        </resource>
    </resources>
</build>

这段代码的意思是,在打包时,将src/main/resources/${env}目录中的文件打入包中。${env}将会被${env}属性的值替换。

示例

以下是一个完整的示例代码。

src/main/java/com/example/myapp/MyApp.java

package com.example.myapp;

public class MyApp {
    public static void main(String[] args) {
        System.out.println("Hello " + getEnv());
    }

    private static String getEnv() {
        return System.getenv("ENV");
    }
}

src/main/resources/dev/application.properties

message=Hello dev!

src/main/resources/test/application.properties

message=Hello test!

src/main/resources/prod/application.properties

message=Hello prod!

pom.xml

<project>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources/${env}</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <env>prod</env>
            </properties>
        </profile>
    </profiles>
</project>

在命令行中使用以下命令,可以生成不同的包:

mvn package -P dev
mvn package -P test
mvn package -P prod

运行target/myapp-1.0-SNAPSHOT.jar,即可看到不同环境的输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java实现最小生成树算法详解

    首先,该文档需要按照标准的markdown格式编写,包括使用合适的标题以及代码块。 本文将详细讲解Java实现最小生成树算法的详细攻略。最小生成树算法是指在一张无向图中,选出一些边将所有顶点连起来,并且这些边的权值之和最小。常用的最小生成树算法有Prim算法和Kruskal算法。 Prim算法 Prim算法的核心思想是:从一个顶点开始,每次选取一个未连接的权…

    Java 2023年5月19日
    00
  • Maven 配置文件 生命周期 常用命令详解

    Maven 配置文件 Maven 是一款基于项目对象模型 (POM) 的构建工具,POM 是 Maven 工作的核心,其中包括了项目依赖、插件配置、构建目标等信息。Maven 配置文件主要分为以下两类: settings.xml settings.xml 文件是 Maven 的全局配置文件,位于 Maven 安装目录的 conf 目录下,主要包括了 Mave…

    Java 2023年5月20日
    00
  • Hibernate实现批量添加数据的方法

    下面是关于“Hibernate实现批量添加数据的方法”的完整攻略: 什么是Hibernate? Hibernate是一个开源的ORM(对象关系映射)框架,用于Java语言编写的应用程序。使用Hibernate可以将Java对象与关系数据库中的表进行映射,它提供了简单的CRUD(增、删、改、查)和高级查询功能,避免了手动编写复杂的SQL语句。 Hibernat…

    Java 2023年5月20日
    00
  • 详解java中的PropertyChangeSupport与PropertyChangeListener

    详解java中的PropertyChangeSupport与PropertyChangeListener 介绍 PropertyChangeSupport 是 Java 中的一个工具类,它实现了支持属性更改监听器的机制,用于帮助我们在程序设计中更方便的实现属性的监听和更改。 PropertyChangeSupport 基于事件模型,可以让我们方便地实现对象属…

    Java 2023年6月15日
    00
  • Java编程中最基础的文件和目录操作方法详解

    Java编程中最基础的文件和目录操作方法详解 在 Java 编程中,文件和目录操作是最基础的操作之一。Java 提供了丰富的类库,可以方便地完成文件和目录的读写、创建、修改、删除等操作。在本文中,我们将详细介绍 Java 编程中最基础的文件和目录操作方法,包括文件的读写、文件夹的创建、遍历、复制和删除等操作。 文件读写 读取文件内容 Java 中读取文件的方…

    Java 2023年6月1日
    00
  • SpringMVC集成FastJson使用流程详解

    SpringMVC集成FastJson使用流程详解 FastJson是阿里巴巴开源的一个JSON解析库,它可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Java对象。在SpringMVC中,我们可以使用FastJson来处理JSON格式的数据。本文将详细讲解SpringMVC集成FastJson的使用流程,并提供两个示例说明…

    Java 2023年5月17日
    00
  • Java编程之文件读写实例详解

    《Java编程之文件读写实例详解》的攻略如下: 第一步:导入IO库 首先要在Java代码中导入IO库,这个库包括文件读写所需的各种类。 import java.io.*; 第二步:读取文件 使用BufferedReader类读取文本文件,具体方法如下: try{ BufferedReader reader = new BufferedReader(new F…

    Java 2023年5月20日
    00
  • Java实现评论回复功能的完整步骤

    下面是Java实现评论回复功能的完整步骤: 1. 数据库设计 首先需要为评论和回复设计数据库表,常见的设计方式是使用两个表分别存储评论和回复,这两个表之间可以通过外键联系起来。一个简单的示例表结构如下: 评论表 Field Type Description id int 评论ID content varchar 评论内容 parent_id int 父评论I…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部