如何在Android Studio中使用Maven

如何在Android Studio中使用Maven,第1张

我们在项目的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项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在Android Studio中使用Maven

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情