在maven中直接注入对log4j1.2.15的依赖是有问题的,如下:
01/04/2010 1:17:15 PM EDT: Missing indirectly referenced artifact javax.jms:jms:jar:1.1:test 01/04/2010 1:17:15 PM EDT: Missing indirectly referenced artifact com.sun.jdmk:jmxtools:jar:1.2.1:test 01/04/2010 1:17:15 PM EDT: Missing indirectly referenced artifact com.sun.jmx:jmxri:jar:1.2.1:test 01/04/2010 1:17:15 PM EDT: Missing indirectly referenced artifact javax.transaction:jta:jar:1.0.1B:compile
出现这些问题的直接原因是sun将这些jar包笼罩在license管理的淫威下,maven中央存储库没法直接获取。而log4j1.2.15的pom.xml又明确依赖于这些文件。
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>oro</groupId> <artifactId>oro</artifactId> <version>2.0.8</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>
解决的办法可能你已经想到了,那就是手工获取,从sun的下载页上获取这些jar包,然后按下面的指令安装。当然你也可以直接拷贝到.m2的指定目录。
1. 下载jmxtools、jmxri.jar、jta.jar、jms.jar和jdbc2_0-stdext.jar
2. 输入如下指令安装:
cd <directory containing jmxri.jar > mvn install:install-file -Dfile=jmxri.jar -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar cd <directory containing jmxtools.jar > mvn install:install-file -Dfile=jmxtools.jar -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar cd <directory containing jta-1.0.1B.jar> mvn install:install-file -Dfile=jta-1.0.1B.jar -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar cd <directory containing jms.jar> mvn install:install-file -Dfile=jms.jar -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar
如果系统提示你mvn命令找不到,那说明你还没有安装maven, 或者没有指定M2_HOME环境变量并将其%M2_HOME%\bin加入classpath.请参考http://maven.apache.org/download.html#Installation
3. 完成!
当然如果你不用log4j1.2.15就不会有这些麻烦,如果只是单纯地用来写log,log4j1.2.14就已经足够啦.