【发布时间】:2015-10-22 00:34:35
【问题描述】:
这里我们展示了两个项目结构。
- 多个项目的第一个
- 另一个用于单一项目结构。
我们想要组装由多个项目组成的单个项目。我们的要求是通过 java 程序从不同的位置动态加载它的依赖项,如 classes、resources、jars。无需将类路径条目添加到它的 jar MANIFEST.MF。
您可以在运行时添加 java 选项以识别类路径,但我们更喜欢通过 java 程序动态加载。
/opt/java/chorke/multiple/projects/home/
├─ bin/
│ ├─ mspn/
│ │ ├─ lib/
│ │ │ ├─ chorke-mspn-utlity-2.0.00-SNAPSHOT.jar
│ │ │ └─ chorke-mspn-webapp-2.0.00-SNAPSHOT.jar
│ │ ├─ chorke-mspn-server-2.0.00-SNAPSHOT.jar [executable jar]
│ │ ├─ README.md
│ │ └─ LICENSE
│ ├─ mllp/
│ │ ├─ lib/
│ │ │ ├─ chorke-mllp-utlity-2.0.00-SNAPSHOT.jar
│ │ │ └─ chorke-mllp-webapp-2.0.00-SNAPSHOT.jar
│ │ ├─ chorke-mllp-server-2.0.00-SNAPSHOT.jar [executable jar]
│ │ ├─ README.md
│ │ └─ LICENSE
│ └─ itis/
│ ├─ lib/
│ │ ├─ chorke-itis-utlity-2.0.00-SNAPSHOT.jar
│ │ └─ chorke-itis-webapp-2.0.00-SNAPSHOT.jar
│ ├─ chorke-itis-server-2.0.00-SNAPSHOT.jar [executable jar]
│ ├─ README.md
│ └─ LICENSE
├─ lib/
│ ├─ commons-lang3-3.3.2.jar
│ ├─ ...more...hidden...jars...here.jar
│ ├─ slf4j-log4j12-1.7.12.jar
├─ opt/
│ ├─ org.eclipse.swt.gtk.linux.x86-4.4.2.jar
│ ├─ org.eclipse.swt.cocoa.macosx.x86-4.4.2.jar
│ ├─ ...more...optional...hidden...jars...here.jar
│ └─ org.eclipse.swt.win32.win32.x86_64-4.4.2.jar
└─ etc/
├─ mspn/
│ ├─ application.properties
│ ├─ application.yml
│ └─ log4j.xml
├─ mllp/
│ ├─ application.properties
│ ├─ application.yml
│ └─ log4j.xml
└─ itis/
├─ application.properties
├─ application.yml
└─ log4j.xml
在这里,我们将多个项目结构拆分为单个项目,以供您考虑。
/opt/java/chorke/single/project/home/
├─ bin/
│ └─ itis/
│ ├─ lib/
│ │ ├─ chorke-itis-utlity-2.0.00-SNAPSHOT.jar
│ │ └─ chorke-itis-webapp-2.0.00-SNAPSHOT.jar
│ ├─ chorke-itis-server-2.0.00-SNAPSHOT.jar [executable jar]
│ ├─ README.md
│ └─ LICENSE
├─ lib/
│ ├─ commons-lang3-3.3.2.jar
│ ├─ ...more...hidden...jars...here.jar
│ ├─ slf4j-log4j12-1.7.12.jar
├─ opt/
│ ├─ org.eclipse.swt.gtk.linux.x86-4.4.2.jar
│ ├─ org.eclipse.swt.cocoa.macosx.x86-4.4.2.jar
│ ├─ ...more...optional...hidden...jars...here.jar
│ └─ org.eclipse.swt.win32.win32.x86_64-4.4.2.jar
└─ etc/
└─ itis/
├─ application.properties
├─ application.yml
└─ log4j.xml
已编辑
假设我们要运行chorke-itis-server-2.0.00-SNAPSHOT.jar by
java -jar ./bin/itis/chorke-itis-server-2.0.00-SNAPSHOT.jar
command 但不会执行,因为类路径中缺少它的依赖关系,例如:-
- 自己的jar库
./bin/itis/lib/*.jar - 常用jar库
./lib/*.jar - 可选的jar库
./opt/*.jar - 配置资源
./etc/itis/*.*
这些依赖项不会像往常一样加载。我们应该做更多的事情来识别这些类路径。它可以通过提供类路径参数从命令行传递,也可以通过 java 程序动态传递。
您能否帮助我们通过核心 java 或任何类型的开源框架来构建动态类加载器?
【问题讨论】:
-
如果这些是您创建的 JAR,那么您可以创建一个本地存储库并将 maven 指向它。如果它们在 maven-central 左右可用,您可以直接将依赖项放在 POM.xml 中,当您使用 maven install 编译项目时,它们已经被导入并在您的路径中。
-
先生。 We are Borg 生产环境如何组装项目以通过java程序从不同位置动态加载类、资源、jar。
-
你必须去OSGI 这样做。有一个 Maven 插件可以帮助创建和打包模块。
-
您始终可以在服务器端的开发机器上创建相同的本地存储库。很多公司都是这样做的!!!
标签: java spring maven ant classloader