如何在IDEA的Maven Java项目中自动引入并更新SVN仓库指定class文件
从SVN自动引入并更新class文件到Maven项目的实现方案
方案一:Maven依赖管理(首推)
直接用class文件不够规范,建议把SVN里的工具类打包成Jar,作为Maven依赖引入,既能自动拉取,更新也方便。
- 打包目标类为Jar包
如果SVN的core项目是Maven结构,直接在该项目根目录执行:
mvn clean package -DskipTests要是只想打包util_1和util_2,也可以手动操作:
- 从SVN检出
core/src目录,编译util_1.java和util_2.java得到class文件 - 按类的包结构创建文件夹(比如类包是
com.myorg.util,就建com/myorg/util目录),把两个class文件放进去 - 执行Jar打包命令:
jar cvf utils.jar com/
之后把Jar包传到公司Maven私服,或者本地安装到Maven仓库:
mvn install:install-file -Dfile=utils.jar -DgroupId=com.myorg -DartifactId=utils -Dversion=1.0.0 -Dpackaging=jar- 打包目标类为Jar包
- 在HelloWorld项目的pom.xml中添加依赖
把下面的依赖代码加到dependencies节点里:
<dependency> <groupId>com.myorg</groupId> <artifactId>utils</artifactId> <version>1.0.0</version> </dependency>后续SVN里的工具类更新后,重新打包Jar并升级版本号,修改pom里的版本就能自动拉取最新内容。
- 在HelloWorld项目的pom.xml中添加依赖
方案二:直接同步SVN的class文件(临时场景用)
如果不想折腾Jar包,也可以直接把SVN里的class文件同步到项目中:
方法1:SVN外部引用
- 在IDEA里打开HelloWorld项目,找到要存放class文件的目录(比如
src/main/resources/libs),右键选择Subversion->Properties - 添加属性
svn:externals,值设为:utils http://urlsvn/svn/core/class
(如果只想拉取util_1和util_2,可以先在SVN上建一个只包含这两个文件的目录,或者拉取整个class目录后,在项目里排除util_3.class) - 更新项目,SVN会自动把指定目录的class文件拉到本地
- 最后在IDEA中把这个目录标记为
Sources Root,编译时就会把class文件放到输出目录,直接用import语句引用就行
方法2:IDEA库同步
- 先从SVN检出
core/class目录到本地某个位置 - 打开HelloWorld项目的
File->Project Structure->Libraries,点击+选择Java,选中刚才检出的class目录 - 要自动更新的话,在IDEA的
Settings->Version Control->Subversion里设置定时自动更新,或者手动右键目录选择Subversion->Update Directory
注意点
- 引用class文件时,要确保类的包结构和你的import语句匹配,比如util_1的包是
com.myorg.util,import就得写import com.myorg.util.util_1; - 尽量用方案一,直接用class文件容易出现版本混乱、依赖缺失的问题,Maven依赖管理更靠谱
- 方案二的更新需要手动或定时触发,不像Maven依赖那样能自动感知版本变化
内容的提问来源于stack exchange,提问作者Arslan
相关产品推荐
相关产品推荐

