标签: subproject

Gradle子项目名称与文件夹名称不同

我有几个子项目是多项目构建(平面层次结构)的一部分.我想将它们的名称设置为与其文件夹名称不同.但是在include(setting.gradle)中,它必须具有文件夹名称,否则它将找不到它(对于编译项目(':ProjectName')也是如此).

如果我尝试设置project.name,它会告诉我这是只读的.原因是我们正在从Ant转换并希望为Eclipse IDE保留相同的名称.到目前为止,我们使用jar.artifactName来设置我们想要的任何名称.

谢谢,

directory subproject gradle

52
推荐指数
2
解决办法
2万
查看次数

如何在不部署jar的情况下在Maven中配置子项目依赖项?

我用谷歌搜索了这个似乎没有人有答案,但似乎这样的基本事情应该是可能的.

我有以下项目结构:

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)

maven-2 module subproject

18
推荐指数
2
解决办法
2万
查看次数

在XCode中指定子项目的配置

我有一个XCode项目(A)引用另一个项目(B).默认情况下(据我所知),XCode将隐式构建与目标配置B匹配的依赖项的配置A(例如,"Debug").但是,如果我想要A构建为"Debug"并B构建为"Release",该怎么办?我如何在XCode中指定它?

configuration xcode dependencies build subproject

15
推荐指数
1
解决办法
4544
查看次数

Gradle无法为参数找到方法compile()

我有一个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)

android subproject gradle android-gradle-plugin

11
推荐指数
1
解决办法
6万
查看次数

使用Xcode 4子项目中的静态库和捆绑产品

我有一个包含2个项目的工作区:

  1. 一个包含2个产品的项目:静态库和资源包
  2. 构建iOS应用程序的项目.

第一个项目已作为第二个项目下的子项目参考添加.我有静态库建设很好,它链接到应用程序,一切都很好.但是,我似乎无法在应用程序中包含资源包.

该捆绑包已添加到应用程序的"构建"方案中.

我已经尝试将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文件,因此我没有看到这种依赖性来自何处.任何建议将不胜感激.

bundle static-libraries subproject xcode4

9
推荐指数
1
解决办法
3463
查看次数

SBT构建,在Compile上运行子项目的主类并运行

我有一个简单的构建工具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.

=]

java scala multi-project subproject sbt

9
推荐指数
1
解决办法
1797
查看次数

Gradle子项目未包含在类路径中

我们设置了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开始)

java subproject gradle

8
推荐指数
2
解决办法
8691
查看次数

无法找到子项目(框架)中的模块

我正在使用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.xcprojectMyApp项目中:

在此输入图像描述

然后,我拖动和掉线MySubProject.frameworkMySubProject/Products/进入MyApp项目的常规- >嵌入式二进制文件和链接的框架和库:

在此输入图像描述

现在,在MyApp/ViewController.swift,我MyServiceMySubProject以下导入类: 在此输入图像描述

但是当我构建MyApp项目时,我总是得到编译器错误" 没有这样的模块'MyService' ",如上图所示.

为什么?如何使MyApp能够访问MySubProject代码?

xcode subproject ios swift3 xcode8

7
推荐指数
1
解决办法
1089
查看次数

Xcode和iPhone - 在多个项目中重用代码的最佳方式?

在项目中重用代码的最佳方法是什么?

比方说,我实现了一个UI元素,我希望它在我的两个iPhone和iPad应用程序使用,而无需代码复制过来,并有2份副本.

iphone xcode code-reuse subproject

6
推荐指数
1
解决办法
1527
查看次数

SBT:如何从一项聚合任务中排除一个子项目

我有一堆子项目,我定义如下(实际上由 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(所以也许这是错误的),顶部的aggregatedependsOn都有意义:第一个在所有子项目中运行任务,第二个方便调试东西。

现在,问题是它只tests包含一堆测试,并且scripts是一个用作发布步骤的脚本——所以我需要以某种方式使其避免仅为它们创建 jar 文件。我仍然希望compile/ test/etc 被聚合,包括它们。

我对文档的理解是,这应该通过aggregate在 中设置密钥来完成Top,并且实际上添加类似的内容

  .settings(aggregate in …
Run Code Online (Sandbox Code Playgroud)

scala multi-project subproject sbt

6
推荐指数
0
解决办法
1764
查看次数