如何在Android Studio中使用Maven
我们在项目的buildgradle
文件中如下定义仓库,就能使用Maven
Central了:
allprojects
{
repositories
{
mavenCentral()
}
}
注意,虽然jcenter和Maven
Central
都是标准的
android
library仓库,但是它们维护在完全不同的服务器上,由不同的人提供内容,两者之间毫无关系。在jcenter上有的可能
Maven
Central
上没有,反之亦然。
除了两个标准的服务器之外,如果我们使用的library的作者是把该library放在自己的服务器上,我们还可以自己定义特有的Maven仓库服务器。
然后在里面使用相同的方法获取一个library。
dependencies
{
compile
'comcrashlyticssdkandroid:crashlytics:224@aar'}
但是将library上传到标准的服务器与自建服务器,哪种方法更好呢?当然是前者。如果将我们的library公开,其他开发者除了一行定义依赖名的代码之外不需要定义任何东西。
最近在为eclipse配置maven和scala插件,昨天捣鼓了一天,今天终于把问题解决,其实也不是解决问题,只是重新启动新的eclipse,然后插件全部都重新装,由于之前装的插件顺序也比较混乱,只是要用什么,就装了一下的,导致eclipse崩溃。
eclipse 37(indigo),由于37版本是最新的,所以插件有可能不稳定,会导致一些意想不到的错误。
1安装maven插件
安装插件有好几种方法,一种是在help->Eclipse marketplace 查找m2e,另一种是在help->Install New Software
说明:网上也有人说因为eclipse是最新版,可能你下的m2e插件不稳定,导致在Install New SoftWare的时候安装不了。查看jboss的官方博客,已经有新版的m2e插件出现在marketplace中。
一般来说,都是调用外部的settingsxml文件,这个时候就需要在window->preferences->maven->user settings选择你本地的文件。
2安装scala插件
3安装jetty插件
maven项目比较推崇jetty服务器,在eclipse里用命令运行,平时能查看源码,但是debug的时候,会导致找不到maven 仓库里的源码(不知道大家有没有遇到过类似的问题)。
解决办法:安装jetty插件,在help->Eclipse Marketplace 输入jetty,安装下,之后debug就能解决这个问题的。这样会有另一个问题的发生,因为在pom里配置jetty插件需要配置系统变量如下:
<systemProperties>
<systemProperty>
<name>CONFIG_DIR_PATH</name>
<value>${basedir}/config</value>
</systemProperty>
</systemProperties>
这样用命令行:mvn jetty:run 就可以读到系统变量,但是用eclipse jetty插件就会导致找不到CONFIG_DIR_PATH。
参考http://stackoverflowcom/questions/3895047/jetty-set-system-property,http://docscodehausorg/display/JETTY/jettyxml,http://blogcsdnnet/CrazyCoder2010
在WEB-INF下建一个名字为jetty-webxml或者web-jettyxml,格式如下:
<xml version="10" encoding="UTF-8" >
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jettymortbayorg/configuredtd">
<Configure class="orgeclipsejettywebappWebAppContext">
<Call class="javalangSystem" name="setProperties">
<Arg>
<New class="javautilProperties">
<Call name="putAll">
<Arg>
<Call class="javalangSystem" name="getProperties" />
</Arg>
</Call>
<Call name="setProperty">
<Arg>CONFIG_DIR_PATH</Arg>
<Arg>/config/config</Arg>
</Call>
</New>
</Arg>
</Call>
</Configure>
4安装svn插件
安装这个都没有问题,地址:http://subclipsetigrisorg/update,主要是中文看着别扭,添加一行 osginl=en_US 到%eclipse_home%/configuration/configini即可。
安装成功之后,你都可以在window->show view 看到已经安装的插件。
问题1:创建scala project失败
Message:Unhandled event loop exception
Exception Stack Trace:
javalangNullPointerException
at scalatoolseclipsewizardsNewApplicationPagesetVisible(NewApplicationPagescala:40)
at orgeclipsejfacewizardWizardDialogupdateForPage(WizardDialogjava:1260)
at orgeclipsejfacewizardWizardDialogaccess$4(WizardDialogjava:1239)
at orgeclipsejfacewizardWizardDialog$8run(WizardDialogjava:1228)
at orgeclipseswtcustomBusyIndicatorshowWhile(BusyIndicatorjava:70)
at orgeclipsejfacewizardWizardDialogshowPage(WizardDialogjava:1226)
at orgeclipsejfacewizardWizardDialognextPressed(WizardDialogjava:915)
at orgeclipsejfacewizardWizardDialogbuttonPressed(WizardDialogjava:428)
at orgeclipsejfacedialogsDialog$2widgetSelected(Dialogjava:624)
at orgeclipseswtwidgetsTypedListenerhandleEvent(TypedListenerjava:240)
at orgeclipseswtwidgetsEventTablesendEvent(EventTablejava:84)
at orgeclipseswtwidgetsWidgetsendEvent(Widgetjava:1053)
at orgeclipseswtwidgetsDisplayrunDeferredEvents(Displayjava:4165)
at orgeclipseswtwidgetsDisplayreadAndDispatch(Displayjava:3754)
at orgeclipsejfacewindowWindowrunEventLoop(Windowjava:825)
at orgeclipsejfacewindowWindowopen(Windowjava:801)
at orgeclipseuiinternalhandlersWizardHandler$NewexecuteHandler(WizardHandlerjava:257)
at orgeclipseuiinternalhandlersWizardHandlerexecute(WizardHandlerjava:277)
at orgeclipseuiinternalhandlersHandlerProxyexecute(HandlerProxyjava:293)
at orgeclipsecorecommandsCommandexecuteWithChecks(Commandjava:476)
at orgeclipsecorecommandsParameterizedCommandexecuteWithChecks(ParameterizedCommandjava:508)
at orgeclipseuiinternalhandlersHandlerServiceexecuteCommand(HandlerServicejava:169)
at orgeclipseuiinternalhandlersSlaveHandlerServiceexecuteCommand(SlaveHandlerServicejava:241)
at orgeclipseuiinternalactionsCommandActionrunWithEvent(CommandActionjava:157)
at orgeclipsejfaceactionActionContributionItemhandleWidgetSelection(ActionContributionItemjava:584)
at orgeclipsejfaceactionActionContributionItemaccess$2(ActionContributionItemjava:501)
at orgeclipsejfaceactionActionContributionItem$5handleEvent(ActionContributionItemjava:411)
at orgeclipseswtwidgetsEventTablesendEvent(EventTablejava:84)
at orgeclipseswtwidgetsWidgetsendEvent(Widgetjava:1053)
at orgeclipseswtwidgetsDisplayrunDeferredEvents(Displayjava:4165)
at orgeclipseswtwidgetsDisplayreadAndDispatch(Displayjava:3754)
at orgeclipseuiinternalWorkbenchrunEventLoop(Workbenchjava:2701)
at orgeclipseuiinternalWorkbenchrunUI(Workbenchjava:2665)
at orgeclipseuiinternalWorkbenchaccess$4(Workbenchjava:2499)
at orgeclipseuiinternalWorkbench$7run(Workbenchjava:679)
at orgeclipsecoredatabindingobservableRealmrunWithDefault(Realmjava:332)
at orgeclipseuiinternalWorkbenchcreateAndRunWorkbench(Workbenchjava:668)
at orgeclipseuiPlatformUIcreateAndRunWorkbench(PlatformUIjava:149)
at orgeclipseuiinternalideapplicationIDEApplicationstart(IDEApplicationjava:123)
at orgeclipseequinoxinternalappEclipseAppHandlerun(EclipseAppHandlejava:196)
at orgeclipsecoreruntimeinternaladaptorEclipseAppLauncherrunApplication(EclipseAppLauncherjava:110)
at orgeclipsecoreruntimeinternaladaptorEclipseAppLauncherstart(EclipseAppLauncherjava:79)
at orgeclipsecoreruntimeadaptorEclipseStarterrun(EclipseStarterjava:344)
at orgeclipsecoreruntimeadaptorEclipseStarterrun(EclipseStarterjava:179)
at sunreflectNativeMethodAccessorImplinvoke0(Native Method)
at sunreflectNativeMethodAccessorImplinvoke(NativeMethodAccessorImpljava:39)
at sunreflectDelegatingMethodAccessorImplinvoke(DelegatingMethodAccessorImpljava:25)
at javalangreflectMethodinvoke(Methodjava:597)
at orgeclipseequinoxlauncherMaininvokeFramework(Mainjava:622)
at orgeclipseequinoxlauncherMainbasicRun(Mainjava:577)
at orgeclipseequinoxlauncherMainrun(Mainjava:1410)
at orgeclipseequinoxlauncherMainmain(Mainjava:1386)
Session Date:
eclipsebuildId=M20120208-0800
javaversion=160_26
javavendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product orgeclipseepppackagejeeproduct
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product orgeclipseepppackagejeeproduct
是的。上面所说的仓库是指你电脑本地的jar包存在路径maven项目直接从本地库中引入jar到项目中,如果maven中需要引入的jar你本地库中没有就会到你指定的nexus(管理maven所依赖的jar的服务器)服务器中去下载到本地库中然后引入到项目中
需要。tomcat部署就是将项目拷贝到maven服务器,Tomcat启动时将自动加载应用。启动时还需要maven环境的支持才可以顺利启动。所以需要安装。Maven项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
0条评论