当前位置: 首页 > 编程笔记 >

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

支华池
2023-03-14
本文向大家介绍Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包,包括了Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包的使用技巧和注意事项,需要的朋友参考一下

一、java中的包

  Java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分它们。

  Package xxx 必须位于java文件除了注释以外的第一行,用来指明当前文件中的类属于哪一个包,如果没有package语句,则该文件中的类都属于默认包。

  Import xxx用来在当前java文件中导入不属于当前包中的类,从而可以在当前文件中使用它们。

二、java中的环境变量

1.path

  环境变量其实就是一组变量(废话),它的作用是给系统和应用程序提供参数。例如:path,它告诉系统和应用程序一些系统必备的程序的存储位置,比如你要运行ipconfig命令,系统去哪里找它呢,就是通过path变量,把它所存储的位置挨个找一遍,直到找到为止。

  在java中,当我们要运行java程序,在控制台输入java xxx时,java这个应用程序(exe文件)到哪里找呢?系统就得通过path,这样就得把包含java这个应用程序的目录拷贝到path环境变量中,这样以后,再运行java xxx 就不会出现“‘java'不是内部或外部命令,也不是可运行的程序或批处理文件。”了。

2.classpath

  说完path,再来说说classpath,解决了java这个命令的问题,还有javac这个命令的问题,这里就牵扯到java中的包机制了。

  Java程序是由一个一个类构成的,类之间可以相互调用,还有一些java语言已经定义好的类,那么当程序要用到这些类的时候,去哪里找他们呢,这就需要classpath这个环境变量来指点迷津了。

  总结:classpath指明了类查找路径,如果类没有被打包,那就需要将其所在目录添加到classpath中,如果类被打包为JAR文件,则需要将JAR文件的实际名称写清楚。

Classpath一般设置为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”

  其中.代表当前目录,%JAVA_HOME%代表java jdk的路径。Dt.jar中主要是swing包中的各种控件类。Tools.jar中是各种工具类。

  当编译器碰到import语句时,就开始在CLASSPATH所包含的目录中查找。

  (参考:http://www.linuxidc.com/Linux/2012-01/52713.htm)

3.JAVA_HOME

  指明jdk的路径

三、访问权限控制

1.类成员的访问控制

访问控制符:public/protected/包访问权限(无关键字即默认)/private

 

类本身

同包中的子类

不同包中的子类

同包中的非子类

不同包中的非子类

      总之

public

可以

可以

可以

可以

可以

都可以

private

可以

不可以

不可以

不可以

不可以

仅自身可见

default

可以

可以

不可以

可以

不可以

仅同包可见

protected

可以

可以

可以

可以

不可以

子类或者同包可见

2.类的访问控制权限

类只有两种访问控制权限:默认(即包访问控制权限)和public

下面还有点时间,接着给大家介绍maven profile实现多环境打包

项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为:
mvn package -P dev

其中“dev“为环境的变量id, 可以自己定义, 我定义的名称为:dev,qa,pre,prod , 具体在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/maven-v4_0_0.xsd"> 
  ...... 
  <profiles> 
    <profile> 
      <id>dev</id> 
      <properties> 
        <env>dev</env> 
      </properties> 
      <activation> 
        <activeByDefault>true</activeByDefault> 
      </activation> 
    </profile> 
    <profile> 
      <id>qa</id> 
      <properties> 
        <env>qa</env> 
      </properties> 
    </profile> 
    <profile> 
      <id>pre</id> 
      <properties> 
        <env>pre</env> 
      </properties> 
    </profile> 
    <profile> 
      <id>prod</id> 
      <properties> 
        <env>prod</env> 
      </properties> 
    </profile> 
  </profiles> 
......  
  <build> 
    <filters> 
      <filter>config/${env}.properties</filter> 
    </filters> 
    <resources> 
      <resource> 
        <directory>src/main/resources</directory> 
        <filtering>true</filtering> 
      </resource> 
    </resources> 
    ...... 
  </build> 
</project> 

1.profiles定义了各个环境的变量id
2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值
3.resources中是定义哪些目录下的文件会被配置文件中定义的变量替换,一般我们会把项目的配置文件放在src/main/resources下,像db,bean等,里面用到的变量在打包时就会根据filter中的变量配置替换成固定值

 类似资料:
  • 问题内容: 我正在尝试在Jenkins中使用DSL管道。我认为如果可以将项目名称用作脚本的一部分,那就太好了。 我得到错误: 我以为我遵循了这些指示,并且将其作为变量之一。 我决定尝试: 在我的DSL中,结果显示为: 这是我所期望的。 另一个博客提到: 使用环境变量 我们有两种方法来获取它们的价值。在启动过程中传递的属性,由于Groovy与Java的紧密联系,我们可以理解为。 以Java方式读取普

  • 问题内容: 有谁知道如何在Java中访问标准Shell环境的环境变量?我正在使用ProcessBuilder类,并且必须指定正在运行的Shell脚本中使用的特定环境变量,这些变量存在于标准Shell环境中。 访问ProcessBuilder环境不起作用。 问题答案: 您可以通过以下方法获取创建程序时存在的环境变量: http://download.oracle.com/javase/tutoria

  • 问题内容: 对于Windows 7,我已经安装了32位和64位版本的JDK。所有四个安装的版本均为8,更新为20。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 当我下载并解压缩elasticsearch并运行/bin/service.bat或/bin/elasticsearc

  • Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit

  • Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。

  • 环境变量 vue-element-admin 4.0 之后是基于 vue-cli来进行构建,所以所有的环境变量配置都是基于vue-cli来实现和控制的。 官方文档 .env # 在所有的环境中被载入 .env.[mode] # 只在指定的模式中被载入 一个环境文件只包含环境变量的“键=值”对: FOO=bar VUE_APP_SECRET=secre