服务提供者接口(SPI)和应用程序编程接口(API)之间有什么区别?
更具体地说,对于Java库,是什么使它们成为API和/或SPI?
我是一个从事一个相当大的项目的团队的新手,拥有大量的组件和依赖项.对于每个组件,都有一个interfaces包放置了该组件的公开接口.这是一个好习惯吗?
我通常的做法一直是接口和实现在同一个包中.
Bootstrap(v2)和jQuery Mobile(v1.1 RC1)都提供了我想用于我的应用程序的构建块.
Bootstrap干净,简单而精彩.但是,它缺乏jQuery Mobile的极其简单和可定制的"列表视图",我需要创建移动Web应用程序.
从我的简单测试中,他们互相帮助(弄乱一些布局,填充,大小等).
所以,我的问题:
我正在尝试使用"已签名的网址"来访问/上传文件到Google云端存储(GCS).
按照https://developers.google.com/storage/docs/accesscontrol#Signing-Strings中的说明操作
我做了什么:
但是,我仍然得到这个(状态:403 Forbidden):
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.</Message>
<StringToSign>PUT
text/plain
1384084959392
x-goog-api-version:2
x-goog-project-id:99999
/mybucket/myfile.txt</StringToSign>
</Error>
Run Code Online (Sandbox Code Playgroud)
即使我根据"StringToSign"中的值对字符串进行重试,我仍然会得到相同的错误.
在这里阅读各种相关的帖子,但找不到任何解决方案,其中大部分是指x-goog-api-version:1我在使用版本2时.
我错过了什么?任何帮助将不胜感激.
我希望我的gradle任务:
这就像启动服务器来运行集成测试,但这不是tomcat/jetty类型的服务器,因此需要从命令行启动并等待服务器通过服务器的stdout"准备好".
我目前能够使用exec任务来运行我的任务并获得输出.所以我想我可以在Groovy/Java中编写代码以实现我想要的.
但是,编写这种看似常见的模式似乎很乏味.所以我想知道是否有一种更简单的方法来解决这些问题,而无需太多的编码 - 也就是说,这是gradle有DSL的常见模式吗?
请注意,我是Gradle的新手,所以对此主题的任何建议也将不胜感激.
尝试使本地Meteor软件包的依赖关系保持最新时,这是相当繁琐的.
目前,它们是在package.jslike 中指定的,我必须检查所使用的每个依赖项的最新版本并手动更新.
例如
api.use([
'alanning:roles@1.2.14',
'aldeed:simple-schema@1.5.3',
'aldeed:collection2@2.8.0',
'iron:router@1.0.12',
'useraccounts:iron-routing@1.12.4'
]);
Run Code Online (Sandbox Code Playgroud)
可以meteor-tool这样做,还是有更好的方法来更新包的依赖关系,尤其在项目中有多个本地包时非常有用.
我正在尝试使用Bower来管理来自Java/JSP服务器端应用程序的客户端依赖项.
它工作正常,我可以访问通过bower.json中描述的"bower install"解析的客户端库.
但是,许多不必要的文件被添加到"bower_components"中,如所使用的依赖项(测试,文档,示例等)所声明的那样.
问:我可以手动指定过滤器来包含/排除我在bower.json中声明的每个依赖项中的文件吗?
如果这是不可能的,听起来我需要在webapp目录之外解析"bower install"的输出并创建一个单独的(maven/grunt)复制任务来创建我想要的js lib文件结构 - 听起来很乏味.
Gemini是OSGi蓝图容器的参考实现,Apache Aries是另一个被广泛使用的蓝图容器......包括在Apache Karaf中.
如果我正在开始一个新项目(以开源技术为要求)并计划使用蓝图,那么在选择这两个项目时应该考虑哪些因素?
是基于将使用什么OSGi容器的选择,其中:
它甚至重要吗?即我可以只针对蓝图规范进行编码,让部署决定在生产中使用哪个DI容器?
对不起,如果这个问题不是很具体,但主题本身对我来说相当混乱.
我通常的做法是每个svn主干有一个单独的maven项目(可以是多模块),如下所示:
trunk/ (style 1)
/pom.xml
/submod-1
/submod-2
Run Code Online (Sandbox Code Playgroud)
基本上,整个行李箱被视为单个释放包.我发现这更容易管理.有一个聚合/父pom来管理这个主干中的所有模块.
但是,我注意到我的一些同事组织如下:
trunk/ (style 2)
/project-1
/pom.xml
/project-2
/pom.xml
Run Code Online (Sandbox Code Playgroud)
基本上,在单个svn主干内...... project-1和project-2需要单独管理.即我不能检查主干并使用其内容作为单个多模块maven项目 - 我欣赏的东西.
Q1:如果风格2什么时候会成为一个好主意?
Q2:有人能告诉/指出如何使用subversion管理maven项目的最佳实践吗?
我的 NX 应用程序npm run build:server调用ng build api-server会触发@nrwl/node:build构建器。
它将 NestJS 应用程序构建为main.js. 除了我想process.env.NODE_ENV在运行时进行评估之外,其他事情都有效,但我认为它在构建时(通过 Webpack)解决了。
目前,该值始终设置为“开发”。
我是 Nrwl NX 的新手。这有什么解决办法吗?