Maven项目依赖管理和构建私有仓库服务器和使用方法
lipiwang 2024-10-26 13:12 29 浏览 0 评论
# Maven项目依赖管理和构建私有服务器
## 目录
- 第1章Maven概述
- 第2章Maven快速入门
- 第3章Maven基础操作
- 第4章Maven高手进阶
- 第5章Maven应用
- 第6章课程总结
# Maven项目依赖管理和构建私有服务器
## 第1章Maven概述
### 1-1课程概述(02:26)
### 1-2 Maven简介(05:49)
### 1- 3 Maven环境搭建(04:52)
## 第2章Maven快速入门
### 2-1 Maven项目的创建(06:08)
### 2-2第一个依赖和插件(05:57)
### 2- 3运行项目的两种方式(04:57)
### 2-4 Batch Mode问题(03:03)
- 问题:创建Maven项目,挂死在构建项目环节
[ INFO] Generating project in Batch mode
- 原因:防火墙,阻止/延缓了访问在国外的Maven仓库.
- Maven中央仓库国内镜像配置
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public/
</url>
<mirrorOf>central</mirrorOf>
</mirror>
### 2-5 Maven工具和项目的文件结构(06:08)
Maven内建变量
${basedir}表示项目根目录,即包含pom.xml文件的目录;
${version}表示项目版本;
${project.basedir}同${basedir};
${project.baseUri}表示项目文件地址;
${maven.build.timestamp}表示项目构件开始时间;
${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可自定义其格式,其类型可参考java.text.SimpleDateFormat。
${project.build.directory}表示主源码路径;
${project.build.sourceEncoding}表示主源码的编码格式;
${project.build.sourceDirectory}表示主源码路径;
${project.build.finalName}表示输出文件名称;
${project.version}表示项目版本,与${version}相同;
${project.xxx} 当前pom文件的任意节点的内容
${env.xxx} 获取系统环境变量。
${settings.xxx} 指代了settings.xml中对应元素的值。
## 第3章Maven基础操作
### 3-1 Maven基础操作-仓库(08:54)
- ◆远程仓库/中央仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public/
</url>
<mirrorOf>central</mirrorOf>
</mirror>
- ◆本地仓库
- ◆私有服务器
### 3- 2 Maven配置(13:06)
- 基础组件:配置
- ◆Maven核心组件:配置
- ◆全局配置: settings.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
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库配置:默认~/.m2/repository[店家推荐修改配置] -->
<localRepository>${user.home}/.m2/repository</localRepository>
<!-- 交互方式配置,读取用户输入信息[使用默认即可,很少修改] -->
<interactiveMode>true</interactiveMode>
<!-- 是否启用独立的插件配置文件,一般很少启用[默认即可,很少修改] -->
<usePluginRegistry>false</usePluginRegistry>
<!-- 是否启用离线构建模式,一般很少修改[如果长时间不能联网的情况下可以修改] -->
<offline>false</offline>
<!-- 是否启用插件groupId自动扫描[很少使用,配置插件时建议全信息配置] -->
<pluginGroups>
<pluginGroup>org.apache.maven.plugins</pluginGroup>
</pluginGroups>
<!--配置服务端的一些设置如身份认证信息(eg: 账号、密码) -->
<servers>
<!--服务器元素包含配置服务器时需要的信息 -->
<server>
<!--这是server的id(注意不是用户登陆的id)
该id与distributionManagement中repository元素的id相匹配。
-->
<id>server_001</id>
<!--身份鉴权令牌。鉴权/认证用户名和鉴权密码表示服务器认证所需要的登录名和密码。 -->
<username>my_login</username>
<!--身份鉴权密码 。鉴权/认证用户名和鉴权密码表示服务器认证所需要的登录名和密码-->
<password>my_password</password>
<!--鉴权/认证时使用的私钥文件位置。和前两个元素类似
私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)-->
<privateKey>${usr.home}/.ssh/id_dsa</privateKey>
<!--鉴权/认证时使用的私钥密码。 -->
<passphrase>some_passphrase</passphrase>
<!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 -->
<filePermissions>664</filePermissions>
<!--目录被创建时的权限。 -->
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
<mirrors>
<!-- 默认仓库配置给定的下载镜像位置 -->
<mirror>
<!-- 该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
<id>nexus aliyun</id>
<!-- 镜像名称 -->
<name>Nexus Aliyun</name>
<!-- 该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 -->
<url>http://downloads.planetmirror.com/pub/maven2</url>
<!-- 被镜像的服务器的id。
如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像
就需要将mirrorOf设置成central。
保持和中央仓库的id central一致。 这样就能替代中央仓库的功能了-->
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<proxies>
<!--代理元素包含配置代理时需要的信息 -->
<proxy>
<!--代理的唯一定义符,用来区分不同的代理元素。 -->
<id>myproxy</id>
<!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 -->
<active>true</active>
<!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<protocol>http</protocol>
<!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<host>proxy.somewhere.com</host>
<!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<port>8080</port>
<!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 -->
<username>proxyuser</username>
<!--代理的密码,用户名和密码表示代理服务器认证的登录名和密码。 -->
<password>somepassword</password>
<!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 -->
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies>
<profiles>
<profile>
<!-- profile的唯一标识 -->
<id>test</id>
<!-- 自动触发profile的条件逻辑 -->
<activation />
<!-- 扩展属性列表 -->
<properties />
<!-- 远程仓库列表 -->
<repositories />
<!-- 插件仓库列表 -->
<pluginRepositories />
</profile>
</profiles>
<activeProfiles>
<!-- 要激活的profile id -->
<activeProfile>env-test</activeProfile>
</activeProfiles>
<activation>
<!--profile默认是否激活的标识 -->
<activeByDefault>false</activeByDefault>
<!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 -->
<jdk>1.5</jdk>
<!--当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->
<os>
<!--激活profile的操作系统的名字 -->
<name>Windows XP</name>
<!--激活profile的操作系统所属家族(如 'windows') -->
<family>Windows</family>
<!--激活profile的操作系统体系结构 -->
<arch>x86</arch>
<!--激活profile的操作系统版本 -->
<version>5.1.2600</version>
</os>
<!--如果Maven检测到某一个属性(其值可以在POM中通过${name}引用),其拥有对应的name = 值,Profile就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->
<property>
<!--激活profile的属性的名称 -->
<name>mavenVersion</name>
<!--激活profile的属性的值 -->
<value>2.0.3</value>
</property>
<!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->
<file>
<!--如果指定的文件存在,则激活profile。 -->
<exists>${basedir}/file2.properties</exists>
<!--如果指定的文件不存在,则激活profile。 -->
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
<properties>
<spring.Version>5.2.8</spring.Version>
</properties>
<repositories>
<!--包含需要连接到远程仓库的信息 -->
<repository>
<!--远程仓库唯一标识 -->
<id>codehausSnapshots</id>
<!--远程仓库名称 -->
<name>Codehaus Snapshots</name>
<!--如何处理远程仓库里发布版本的下载 -->
<releases>
<!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
<enabled>false</enabled>
<!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
<updatePolicy>always</updatePolicy>
<!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
<checksumPolicy>warn</checksumPolicy>
</releases>
<!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
<snapshots>
<enabled />
<updatePolicy />
<checksumPolicy />
</snapshots>
<!--远程仓库URL,按protocol://hostname/path形式 -->
<url>http://snapshots.maven.codehaus.org/maven2</url>
<!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
<layout>default</layout>
</repository>
</repositories>
</settings>
- ◆项目配置: pom.xml .
考虑到阅读体验,只展示了前100行,一共766行,查看或者翻阅所有请异步
https://gitee.com/zeus-maker/hunter/blob/master/build-tools/Maven/conf/pom_sample.xml
<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">
<!--
1、项目基本信息配置
-->
<!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。 -->
<parent>
<!--被继承的父项目的构件标识符 -->
<artifactId />
<!--被继承的父项目的全球唯一标识符 -->
<groupId />
<!--被继承的父项目的版本 -->
<version />
<!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
<relativePath />
</parent>
<!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
<modelVersion>4.0.0</modelVersion>
<!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->
<groupId>asia.banseon</groupId>
<!--构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group
ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 -->
<artifactId>banseon-maven2</artifactId>
<!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->
<packaging>jar</packaging>
<!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
<version>1.0-SNAPSHOT</version>
<!--项目的名称, Maven产生的文档用 -->
<name>banseon-maven</name>
<!--项目主页的URL, Maven产生的文档用 -->
<url>http://www.baidu.com/banseon</url>
<!--项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签),
不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->
<description>A maven project to study maven.</description>
<!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->
<inceptionYear />
<!--项目相关邮件列表信息 -->
<mailingLists>
<!--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -->
<mailingList>
<!--邮件的名称 -->
<name>Demo</name>
<!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
<post>Demo@126.com</post>
<!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
<subscribe>Demo@126.com</subscribe>
<!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
<unsubscribe>Demo@126.com</unsubscribe>
<!--你可以浏览邮件信息的URL -->
<archive>http://localhost:8080/demo/dev/</archive>
</mailingList>
</mailingLists>
<!--项目开发者列表 -->
<developers>
<!--某个项目开发者的信息 -->
<developer>
<!--SCM里项目开发者的唯一标识符 -->
<id>HELLO WORLD</id>
<!--项目开发者的全名 -->
<name>youname</name>
<!--项目开发者的email -->
<email>youname@qq.com</email>
<!--项目开发者的主页的URL -->
<url />
<!--项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->
<roles>
<role>Project Manager</role>
<role>Architect</role>
</roles>
<!--项目开发者所属组织 -->
<organization>demo</organization>
<!--项目开发者所属组织的URL -->
<organizationUrl>http://www.xxx.com/</organizationUrl>
<!--项目开发者属性,如即时消息如何处理等 -->
<properties>
<dept>No</dept>
</properties>
<!--项目开发者所在时区, -11到12范围内的整数。 -->
<timezone>+8</timezone>
</developer>
</developers>
<!--项目的其他贡献者列表 -->
<contributors>
<!--项目的其他贡献者。参见developers/developer元素 -->
<contributor>
<name />
<email />
<url />
<organization />
<organizationUrl />
<roles />
<timezone />
<properties />
</contributor>
</contributors>
- 优先级
- pom.xml>settings.xmlnote>setting.xml
- 项目配置>用户配置>全局配置
- 1、项目基础信息配置
- 2、项目构建环境配置
- 3、项目仓库管理配置
- 4、项目依赖管理配置
- 5、项目报表信息配置
- 6、项目部署分发配置
### 3- -3 Maven软件坐标(06:25)
- 基础组件: gav坐标
- ◆groupld: 项目ID,当前项目和其他项目的唯一标志.
- ◆artifactld:组件ID,当前项目中的子应用或者子组件的唯一标志 .
- ◆version: 版本号,迭代开发时标志的产品版本信息
- 扩展:版本号的意义
- 软件名称.主版本号.小版本号.阶段版本号.字母版本号
### 3- -4 Maven操作命令(08:28)
### 3- -5 Maven生命周期(04:00)
- 基础组件:生命周期
- ◆clean lifecycle: 项目构建之前的清理环节
- ◆default lifecycle:项目编译和打包环节
- ◆site lifecycle: 项目报告、站点信息、发布环节
### 3- -6手工构建Maven项目(07:37)
### 3-7 MVN命令构建Maven项目(04:16)
### 3- -8使用工具构建Maven项目(03:29)
### 3- -9 archetype项目骨架加载慢的问题(02:57)
### 3- -10自定义archetype项目骨架解决servlet版本问题(06:39)
## 第4章Maven高手进阶
### 4-1 Maven依赖范围管理(06:41)
- ◆什么是依赖范围?
- ◆都有哪些依赖范围?
- ◆为什么 要设置依赖范围?
### 4-2 Maven父子项目依赖传递(12:13)
- ◆什么是父子项目?
- ◆父项目 的依赖?
- ◆子项目的依赖?
### 4- -4 Maven项目常见插件(10:28)
- ◆什么是插件?
- ◆生命周期插件? .
resources/source/clean/compile
- ◆常用操作插件?
tomcat7/denpendency/jar/..
maven-antrun-plugin
maven-archetype-plugin
maven-assembly-plugin
maven-dependency-plugin
maven-enforcer-plugin
maven-help-plugin
maven-release-plugin
maven-resources-plugin
maven-surefire-plugin
build-helper-maven-plugin
exec-maven-plugin
jetty-maven-plugin
versions-maven-plugin
### 4-5 Nexus私有服务器-搭建私有服务器(06:50)
- 下载网址:https://www.sonatype.com/products/repository-oss-download
- Mac本地测试直接使用
brew install nexus
### 4-6 Nexus私有服务器-创建私有仓库(05:50) .
### 4-7 Nexus私有服务器- _依赖下载和项目发布(11:13)
## 第5章Maven应用
### 5-1 Maven构建JavaSE项目(04:11)
- ◆JavaSE项目的特点
- ◆Intellij IDEA构建基于Maven的JavaSE项目
- ◆JavaSE项目运行的两种方式
### 5-2 Maven构建JavaWEB项目(11:04)
### 5-3 Maven依赖直接冲突的问题(06:27)
<exclusions>
<exclusion>
<groupId>组名</ groupId>
<artifactId>冲突的包名</artifactId>
</exclusion>
</ exclusions>
### 5- -4 Maven依赖传递冲突的问题(06:08)
## 第6章课程总结
### 6-1课程总结(02:10)
- Maven基础
- 环境搭建,文件结构
- ◆项目构建,配置梳理
- ◆仓库,坐标、命令和生命周期
- Maven高级
- ◆>项目依赖的范围管理
- ◆父子项目的传递、聚合项目的管理
- 私有服务器的构建使用
- Maven应用
- ◆增强项目功能的插件
- ◆不同类型项目的构建
- ◆解决项目中的依赖冲突
## 参考资料
- [Maven项目依赖管理](https://www.imooc.com/learn/1282)
相关推荐
- Nat. Synthesis: 重大突破,电化学形成C-S键
-
第一作者:JunnanLi,HasanAl-Mahayni通讯作者:AliSeifitokaldani,NikolayKornienko通讯单位:蒙特利尔大学,麦吉尔大学【研究亮点】形成C-...
- 网络安全与应用(二)(网络安全理论与应用)
-
1、应用层安全协议SHTTP和HTTPS:SHTTP:SecHTTP,安全超文本传输协议,是HTTP扩展,使用TCP的80端口。HTTPS:HTTP+SSL,使用TCP的443端口。大部分web应用...
- TN-C、TN-S、TT、IT供电系统详解及对比
-
TN-C、TN-S、TT、IT供电系统是低压配电系统中常见的四种接地方式,它们各自有不同的特点和适用场景。一、系统介绍TN-C供电系统①定义:整个系统中,工作零线(N线)与保护零线(PE线)是合一的,...
- 网络应用服务器(三)(网络应用程序服务器)
-
#头条创作挑战赛#1、DNS协议:域名解析协议,用于把主机域名解析为对应的IP地址。是一个分布式数据库,C/S工作方式。主要基于UDP协议,少数使用TCP,端口号都是53。常用域名如下2、DNS协议...
- 腾讯发布混元Turbo S:业界首次无损应用Mamba架构
-
21世纪经济报道记者白杨北京报道2月27日,腾讯正式发布新一代基座模型——混元TurboS。据腾讯混元团队介绍,混元TurboS在架构方面创新性地采用了Hybrid-Mamba-Transfor...
- 【收藏】低压配电系统中TT IT TN-S/TN-C/TN-C-S 的区别?
-
低压配电系统的接地型式选择是电气安全设计的核心环节,TT、IT、TN-S、TN-C、TN-C-S这五种主要接地型式因其结构、保护原理和故障特性的显著差异,在工程应用中有不同的适用范围和限制条件。如若发...
- 金万维公有云平台如何实现C/S架构软件快速SaaS化
-
金万维作为国内领先的企业信息化垂直B2B平台运营商,拥有超过5000家管理软件合作伙伴,掌握管理软件一线的发展动态,因此深知传统管理软件近年来面对的困境和问题。而SaaS却在软件行业内发展迅猛势如燎原...
- 随时随地做翻译:B/S架构的传奇时代到来
-
随着新兴技术的发展和大数据时代的到来,翻译作为连接各国语言和文化的工具,更是具有前所未有的拓展空间。传统的在计算机辅助翻译软件(CAT)上进行翻译的模式,受到时间和空间的限制,导致翻译过程中面临层层障...
- BS和CS 架构的介绍(一篇就够了)(cs和bs架构的含义)
-
简介C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。...
- 物管王(包租婆)软件架构与B/S和C/S架构的优点和缺点比较
-
一、B/S系统架构的优点和缺点优点:1)客户端无需安装,有Web浏览器即可。2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。3)BS架构无需升级多个客户端,升级服...
- 监听器入门看这篇就够了(怎么检查车上有没有被别人安装监听器)
-
什么是监听器监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。。为什么我们要使用监听器?...
- 购物车【JavaWeb项目、简单版】(java购物车的实现原理)
-
①构建开发环境免费学习资料获取方式导入需要用到的开发包建立程序开发包②设计实体书籍实体publicclassBook{privateStringid;privat...
- 基础篇-SpringBoot监听器Listener的使用
-
1.监听器Listener简介1.1监听器Listener介绍Listener是JavaWeb的三大组件(Servlet、Filter、Listener)之一,JavaWeb中的监听器主要用...
- 你在 Spring Boot3 整合 JWT 实现 RESTful 接口鉴权时是否遇到难题?
-
各位后端开发小伙伴们!在日常使用SpringBoot3搭建项目时,RESTful接口的鉴权至关重要。而JWT技术,作为一种简洁且高效的鉴权方式,被广泛应用。但大家是不是在整合过程中遇到过各...
- javaWeb RSA加密使用(rsa加密java代码)
-
加密算法在各个网站运用很平常,今天整理代码的时候看到了我们项目中运用了RSA加密,就了解了一下。先简单说一下RSA加密算法原理,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)