我有几个子项目是多项目构建(平面层次结构)的一部分.我想将它们的名称设置为与其文件夹名称不同.但是在include(setting.gradle)中,它必须具有文件夹名称,否则它将找不到它(对于编译项目(':ProjectName')也是如此).
如果我尝试设置project.name,它会告诉我这是只读的.原因是我们正在从Ant转换并希望为Eclipse IDE保留相同的名称.到目前为止,我们使用jar.artifactName来设置我们想要的任何名称.
谢谢,
我用谷歌搜索了这个似乎没有人有答案,但似乎这样的基本事情应该是可能的.
我有以下项目结构:
parent
---sub-project1
---sub-project2
Run Code Online (Sandbox Code Playgroud)
sub-project2需要将sub-project1作为依赖项.
所以我在sub-project2的pom中有这个:
<dependencies>
<dependency>
<artifactId>sub-project1</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
....
当我这样做时,Maven尝试下载sub-project1.jar文件,该文件不存在,因为它还没有为repo做好准备.
我试图<scope>import</scope>
在依赖中添加一个,但这也不起作用 - 结果相同.
那么在构建子项目2时,我需要做些什么才能让Maven查看子项目1?
编辑这里有一些pom片段:
家长:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<prerequisites>
<maven>2.0.9</maven>
</prerequisites>
<modules>
<module>sub-project1</module>
<module>sub-project2</module>
</modules>
....
Run Code Online (Sandbox Code Playgroud)
子PROJECT1:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub-project1</artifactId>
....
Run Code Online (Sandbox Code Playgroud)
分项目2:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>parent</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub-project1</artifactId>
<dependencies>
....
<dependency>
<artifactId>sub-project2</artifactId>
<groupId>mygroup</groupId>
<version>1.0-SNAPSHOT</version>
<scope>import</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我mvn clean install
上父母时得到的错误是:
[ERROR] …
Run Code Online (Sandbox Code Playgroud) 我有一个XCode项目(A
)引用另一个项目(B
).默认情况下(据我所知),XCode将隐式构建与目标配置B
匹配的依赖项的配置A
(例如,"Debug").但是,如果我想要A
构建为"Debug"并B
构建为"Release",该怎么办?我如何在XCode中指定它?
我有一个hello world全屏android studio 1.5.1应用程序,我添加了gradle/eclipse-mars子项目.除了将settings:'javalib'添加到settings.gradle之外,没有其他文件被修改.添加项目lib依赖项:
project(':app') {
dependencies {
compile project(':javalib') // line 23
}
}
Run Code Online (Sandbox Code Playgroud)
从根构建构建文件并从命令行运行gradle,得到:
其中:构建文件'D:\ AndroidStudioProjects\AndroidMain\build.gradle'行:23
出了什么问题:评估根项目'AndroidMain'时出现问题.
无法在org.grad le.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@46 3ca82f上为参数[project':javalib']找到方法compile().
将java插件添加到根构建文件没有帮助.
我不认为它在错误的地方.
根项目和添加的子项目都有gradle包装器.
任何指针将不胜感激.
谢谢
编辑:为了澄清,根构建文件是:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories …
Run Code Online (Sandbox Code Playgroud) 我有一个包含2个项目的工作区:
第一个项目已作为第二个项目下的子项目参考添加.我有静态库建设很好,它链接到应用程序,一切都很好.但是,我似乎无法在应用程序中包含资源包.
该捆绑包已添加到应用程序的"构建"方案中.
我已经尝试将Resources.bundle拖入应用程序的"复制构建资源"阶段,但这会在构建时导致此错误:
.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以我查看了派生数据目录,我看到了Resources.bundle
MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug
Run Code Online (Sandbox Code Playgroud)
不
MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator.
Run Code Online (Sandbox Code Playgroud)
我认为这是因为捆绑包不是特定于平台的.所以我尝试添加一个构建阶段来将捆绑包复制到产品目录.导致此构建错误:
.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle depends on itself. This target might include its own product.
Run Code Online (Sandbox Code Playgroud)
但是没有Debug-iphonesimulator/Resources.bundle文件,因此我没有看到这种依赖性来自何处.任何建议将不胜感激.
我有一个简单的构建工具Multi-Project问题...
我有以下目录结构代表我的java sbt项目:
/project1
/project2
/project3
Run Code Online (Sandbox Code Playgroud)
所以所有项目共享一个共同的直接父文件夹.项目1的build.sbt中引用了项目2和3,如下所示:
.dependsOn(project2, project3)
.aggregate(project2, project3)
lazy val project2 = ProjectRef(file("../project2"), "project2")
lazy val project3 = ProjectRef(file("../project3"), "project3")
Run Code Online (Sandbox Code Playgroud)
这样,project1和其他人之间存在依赖关系.
到目前为止一切都很好,一切正常.
但是现在我想在执行任何其他操作之前从project2执行main方法.当我从父(project1)执行"运行"任务时,我希望project2中的特定类执行其主要方法.我该怎么做呢?sbt文档解释说" 聚合意味着在聚合项目上运行任务也将在聚合项目上运行它. ":http: //www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi -Project.html#聚合
我没有看到projet2上的主要课程已被执行.我还将它添加到project2的build.sbt中:
mainClass in (Compile, run) := Some("Main")
Run Code Online (Sandbox Code Playgroud)
该项目的目标是在Compiletime和运行时生成代码.Project2的工作是生成Java和Javascript代码.可以在构建其他项目之前生成.
那可能吗?如果没有,我将不得不独立于其他项目运行project2.
=]
我们设置了2个项目,1个主项目和1个子项目,它们是Java项目.它们都在同一个目录下.
以下是目录结构的外观:
./dev
./Project_A
build.gradle
settings.gradle
./Project_B
build.gradle
Run Code Online (Sandbox Code Playgroud)
Project_A包括Project_B.
Project_A settings.gradle看起来像:
includeFlat 'Project_B'
Run Code Online (Sandbox Code Playgroud)
Project_A build.gradle包含:
compile project(':Project_B')
Run Code Online (Sandbox Code Playgroud)
这个问题 Project_A从Project_B命令行(编译时错过类gradlew干净生成).看起来Project_B不属于Project-A的类路径.
这是来自gradlew clean build的(输出的一部分)在Project_A目录中运行(之后它全部是"package project_b.xy missing"和"找不到符号"(来自Project_B):
:clean
:Project_B:clean
:Project_B:compileJava
:Project_B:processResources
:Project_B:classes
:Project_B:jar UP-TO-DATE
:compileJava
...Starts erroring out here...
Run Code Online (Sandbox Code Playgroud)
我猜这是一个类路径问题,但我无法弄清楚如何解决它.
在此先感谢,JM
PS:编辑问题,因为我能够通过2个项目构建重现问题(从3开始)
我正在使用XCode 8 + Swift 3.
我创建了一个名为"MyApp"的全新iOS项目.然后,我创建了一个名为"MySubProject" 的Cocoa touch 框架项目.(我们的想法是让MyApp项目访问MySubProject代码.)
它们位于同一级文件夹中:
- MyApp/
- MySubProject/
Run Code Online (Sandbox Code Playgroud)
在MySubProject中,我在服务组/文件夹下有一个MyService.swift
文件(它是MyService
类):
代码很简单:
import Foundation
public class MyService {
public func greeting() -> String {
return "Hello my service!"
}
}
Run Code Online (Sandbox Code Playgroud)
在MyApp中,我作为MyApp下的子项目添加MySubProject.xcproject
到MyApp项目中:
然后,我拖动和掉线MySubProject.framework下MySubProject/Products/
进入MyApp项目的常规- >嵌入式二进制文件和链接的框架和库:
现在,在MyApp/ViewController.swift
,我MyService
从MySubProject
以下导入类:
但是当我构建MyApp项目时,我总是得到编译器错误" 没有这样的模块'MyService' ",如上图所示.
为什么?如何使MyApp能够访问MySubProject代码?
在项目中重用代码的最佳方法是什么?
比方说,我实现了一个UI元素,我希望它在我的两个iPhone和iPad应用程序使用,而无需代码复制过来,并有2份副本.
我有一堆子项目,我定义如下(实际上由 a 生成project/meta.sbt
):
lazy val Top = (project in file("."))
.aggregate(common, p1, p2, tests, scripts)
.dependsOn(common, p1, p2, tests, scripts)
lazy val common = project
lazy val p1 = project.dependsOn(common % "compile->compile;test->test")
lazy val p2 = project.dependsOn(common % "compile->compile;test->test")
lazy val tests = project.dependsOn(common % "compile->compile;test->test")
lazy val scripts = project
Run Code Online (Sandbox Code Playgroud)
AFAICT(所以也许这是错误的),顶部的aggregate
和dependsOn
都有意义:第一个在所有子项目中运行任务,第二个方便调试东西。
现在,问题是它只tests
包含一堆测试,并且scripts
是一个用作发布步骤的脚本——所以我需要以某种方式使其避免仅为它们创建 jar 文件。我仍然希望compile
/ test
/etc 被聚合,包括它们。
我对文档的理解是,这应该通过aggregate
在 中设置密钥来完成Top
,并且实际上添加类似的内容
.settings(aggregate in …
Run Code Online (Sandbox Code Playgroud)