我并不打算讲怎么将一个下载的jar库加入到local repository中,我们将自己建立一个jar库,比如我们有一个最简单的HelloWorld类HelloWorldjava:
package comthoughtworksdavenkin;
public class HelloWorld
{
public void sayHello()
{
Systemoutprintln("Hello, World");
}
}
我们希望将HelloWorldjava打包成jar文件安装在Maven的local repository中以便其它程序使用。
编译打包hello-worldjar后,为了符合Maven的规定,需要给hello-worldjar一个版本号,故将hello-worldjar改名为hello-world-10jar,此后便可以用mvn来安装此包到Maven的local repository中了:
mvn install:install-file -Dfile=path/to/hello-world-10jar -DgroupId=comthoughtworksdavenkin -DartifactId=hello-world -Dversion=10 -Dpackaging=jar
其中,-Dfile选项应给出需要安装jar文件的路径,在Linux/Mac下,jar文件将被安装在以下目录:
~/m2/repository/com/thoughtworks/davenkin/hello-world/10/hello-world-10jar
现在,我们的hello-world-10jar便可以被其它Maven项目所使用了,为此创建一个Maven工程:
mvn archetype:generate-DgroupId=comthoughtworksdavenkindemo -DartifactId=helloworld-demo -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=10
此时将在当前目录下自动创建helloworld-demo子目录,切换到helloworld-demo目录,删除已有的Appjava,并创建自己的Mainjava文件
rm src/main/java/com/thoughtworks/davenkin/demo/Appjava
touch src/main/java/com/thoughtworks/davenkin/demo/Mainjava
将以下内容加入到Mainjava文件中:
package comthoughtworksdavenkindemo;
import comthoughtworksdavenkinHelloWorld;
public class Main
{
public static void main(String[] args)
{
new HelloWorld()sayHello();
}
}
接下来是最重要的一步,修改pomxml文件以加入对HelloWorld类的依赖:
>对于一般普通jar包这么上传使用是没问题的,但是如果maven项目是多个子工程一起管理,那么子工程生成的jar包,用上面的方法上传,即使成功,依赖方却下载不下来,
总是报parent:pom找不到,到中央maven仓库瞄一眼,发现确实没有parent的相关信息,为了对比,我去apache的路径下看了看,
他那里却是有parent信息的,这说明我上传得不对,parent的pom信息没有上传,
可我是用eclipse的插件一键式deploy的啊,怎么会不正确呢?
后来没办法了,只能采用传统方式:在命令行下上传parent的pom文件:
mvn deploy:deploy-file -DgroupId=comxxxx -DartifactId=xx -Dversion=100 -Dpackaging=pom -Dfile=pomxml -Durl=仓库地址 -DrepositoryId=仓库名
这样就能把parent的pom信息上传至中央maven仓库。activemq maven 怎么解除spring 依赖
下述说明方式是错误的。
main()
{
int n=5;
int a[n];
……
}
6) 允许在同一个类型说明中,说明多个数组和多个变量。
例如:
int a,b,c,d,k1[10],k2[20];
712 一维数组元素的引用
数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。
数组元素的一般形式为:
数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。
例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
一、应用场景
为了使用maven强大的包依赖管理和项目管理功能,故在项目中使用maven2作为项目建构工具。
但是我的项目在内网构建,为了能使用maven2,只能使用本地仓库依赖策略。
但是,有时候明明本地仓库确确实实存在相应的依赖包,但是在eclipse环境下依然会报错,即:在pomxml显示错误提示信息。
经过我的实践证明,可以通过如下方式解决。
二、示例讲解
以依赖commons-io-201为例讲解:
在pomxml中配置:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>201</version>
</dependency>
三、解决方案
1、
首先,从其他可以在外网下载相应依赖包的地方下载好相应的依赖包到本地仓库,再将该本地仓库拷贝到项目相应位置,便于引用。
2、安装Maven2并进行相应配置,关于Maven2具体安装和配置,略过。
注意:在Maven2的配置文件settingxml一定要修改如下属性:
<offline>true</offline>
该属性配置默认为false,因为是在内网,无法到外网下载依赖包,所以一定要配置离线属性为true。
3、如果本地仓库确实存在该依赖包,且eclipse没有报错,那么在本地仓库中找到该依赖包所在的位置,相应目录下必定存在如下6个文件:
_mavenrepositories
commons-io-201jar
commons-io-201jarsha1
commons-io-201pom
commons-io-201pomsha1
m2e-lastUpdatedproperties
依赖配置正确且eclipse没有报错时依赖包目录下包含的文件
当然,如下载了源码的话,应该还包括如下2个文件:
commons-io-201-sourcesjar
commons-io-201-sourcesjarsha1
所以,如果当本地仓库中确实存在相应的依赖jar包,但是在eclipse中依然报错的话,请进入到相应依赖包的目录位置,观察该目录下是否对应存在如图1所示的6个文件。
通常情况下,当在eclipse中报错的话,在依赖包目录下还存在一个“xxxlastUpdated”文件。
如果确实存在“xxxlastUpdated”文件的话,请先删除该文件。并确认是否存在如下2个文件:
_mavenrepositories
m2e-lastUpdatedproperties
通常在eclipse中报错的话,是不会存在这2个文件的,到别的依赖正确的jar包目录下去拷贝这2个文件到当前目录下,并修改相应内容:
(1)、 修改“_mavenrepositories”内容:
#NOTE: This is an internal implementation file,
its format can be changed without prior notice
#Wed Jul 10 09:16:30 CST
2013
${artifactId}-${version}-sourcesjar>nexus=
${artifactId}-${version}jar>central=
${artifactId}-${version}pom>central=
${artifactId}-${version}pom>nexus=
${artifactId}-${version}jar>nexus=
如:commons-io-201依赖包目录下的_mavenrepositories文件内容如下:
#NOTE: This is an internal implementation file,
its format can be changed without prior notice
#Wed Jul 10 09:16:30 CST
2013
commons-io-201-sourcesjar>nexus=
commons-io-201jar>central=
commons-io-201pom>central=
commons-io-201pom>nexus=
commons-io-201jar>nexus=
(2)、 m2e-lastUpdatedproperties文件内容可以不用修改!
完成后,在eclipse中clean一下项目,并执行“Maven->Update
Project”,OK,问题解决!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)