haskell - 尽管堆栈求解器,找不到模块 `Test.Hspec'

标签 haskell dependencies haskell-stack

这是我的stack.yaml文件声明 hspec作为额外的依赖:

# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
resolver: lts-3.8  

# Local packages, usually specified by relative directory name
packages:
- '.'

# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps:
- hspec-2.2.0

当我运行 stack solver它说没有改变要做:
root@5d7daa2aec0a:/src/test_stack/a-test/src# stack solver
This command is not guaranteed to give you a perfect build plan
It's possible that even with the changes generated below, you will still need to do some manual tweaking
Asking cabal to calculate a build plan, please wait
No needed changes found

To automatically modify your stack.yaml file, rerun with '--modify-stack-yaml'

这是我的源文件(只是为了检查我是否可以将 Hspec 与堆栈一起使用):
module Main where

import Test.Hspec


main :: IO ()
main = do
  putStrLn "hello world"

当我运行 stack build我得到:

2015-10-05 22:24:08.450413: [警告] 找不到模块 `Test.Hspec' @(stack_Bp003b8iWaELtdr693pSPs:Stack.Build.Execute src/Stack/Build/Execute.hs:1241:35)

我以为 stack solver确保额外的依赖是好的。

我做错了什么?
这是我第一次使用堆栈。

最佳答案

虽然 stack 取代了 cabal-install(用于构建和安装软件包的命令行工具),但它仍然使用 Cabal 打包基础设施。特别是,这意味着使用 stack 构建的项目仍然是带有 .cabal 文件的 Cabal 兼容包,并且它们的所有依赖项都应该在 build-depends 中列出。具有适当版本范围的 .cabal 文件的部分。即使在 stack.yaml 中也指定了依赖关系,这仍然成立。文件 extra-deps字段,因为该字段有不同的用途(即,在构建包时为堆栈提供确切的版本)。

关于haskell - 尽管堆栈求解器,找不到模块 `Test.Hspec',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32958973/

相关文章:

haskell - 大多数时候有什么理由不使用 StrictPragma 吗?

haskell - 使用 Stack 安装 X11 软件包时出现 "X11 libraries not found"错误

haskell - 为什么 `stack build` 会改变我的 .cabal 文件?

grails - 无法从Grails应用程序中排除httpcomponents jar

c - 使用 Stack 构建时如何包含从 haskell 源文件生成的 'xxx_stub.h' 文件

math - 在Haskell中获取平方根的整数部分

Haskell list monad 和 return ()

haskell - Haskell中模式匹配评估的顺序

java - maven 添加项目的 jar lib 到可执行 jar

maven-2 - Maven : OSGI, bundle 和多模块项目